مدیریت سرویسها با systemd در CentOS
در CentOS (نسخههای 7 به بعد)، سرویسها (Services) با systemd مدیریت میشوند. ابزار اصلی شما برای کار با آن دستور systemctl است که کنترل فعالسازی، اجرا، متوقفسازی، و بررسی وضعیت سرویسها را بهدست میدهد.
1. ساختار systemd
در systemd هر سرویس یک unit file دارد که به طور پیشفرض در مسیرهای زیر قرار دارد:
- /usr/lib/systemd/system/ → فایلهای سرویسهای پیشفرض سیستم
- /etc/systemd/system/ → فایلهای سرویس که مدیر سیستم تعریف یا تغییر داده
نام Unit معمولاً با پسوند .service میآید (برای سرویسها)، ولی systemd انواع دیگری هم دارد مثل .mount, .target, .socket.
2. دستورات متداول مدیریت سرویسها
در تمام این دستورات میتوانید .service را حذف کنید چون systemd خودش آن را اضافه میکند. مثال: nginx = nginx.service
🔹 شروع سرویس
🔹 توقف سرویس
🔹 ریستارت (Restart)
🔹 بارگذاری مجدد تنظیمات بدون توقف کامل (Reload)
مناسب برای وقتی که فایل کانفیگ را تغییر دادهاید.
3. فعال/غیرفعال کردن سرویس در بوت
فعالسازی:
→ سرویس بعد از ریبوت بهطور خودکار اجرا میشود.
غیرفعال کردن:
→ از اجرای خودکار سرویس پس از بوت جلوگیری میشود.
فعالسازی فوری (شروع + فعال برای بوت بعدی):
4. وضعیت سرویسها
خروجی شامل:
- وضعیت (active / inactive / failed)
- PID پروسه
- زمان اجرا
- لاگ اخیر
5. مشاهده لیست سرویسهای فعال
6. مشاهده لاگ سرویسها (Journal)
systemd از journalctl برای لاگ استفاده میکند:
- لاگ کامل یک سرویس:
- آخرین لاگها و پیگیری زنده (مشابه tail -f):
7. ریلود systemd بعد از تغییر فایل سرویس
اگر فایل unit را تغییر دادید یا سرویس جدید ایجاد کردید:
8. مثال کامل - راهاندازی Nginx در CentOS
dnf install nginx -y
# فعال و اجرای آنی
systemctl enable --now nginx
# بررسی وضعیت
systemctl status nginx
# مشاهده لاگ
journalctl -u nginx -f
نکات مهم امنیتی
- اجرای سرویسها را فقط برای موارد ضروری enable کنید تا سطح حمله کمتر شود.
- وضعیت سرویسها را دورهای بررسی کنید:
- از systemctl mask برای جلوگیری کامل از اجرای ناخواسته یک سرویس استفاده کنید.
مثال:
