systemd و نوشتن Unit

مفاهیم systemd: unit، target و وضعیت سرویس‌ها

systemd چیست و چرا مهم است؟

systemd در بیشتر توزیع‌های امروزی لینوکس (Ubuntu، CentOS/RHEL، Debian) فرایند شماره یک است و مسئول راه‌اندازی، توقف، نظارت و مدیریت وابستگی سرویس‌هاست. واحد پایه در systemd به نام unit شناخته می‌شود؛ انواع رایج آن عبارت‌اند از .service برای سرویس‌ها، .timer برای زمان‌بندی، .mount برای فایل‌سیستم‌ها و .target برای گروه‌بندی چند unit به‌عنوان یک نقطه هم‌گام‌سازی (مثل multi-user.target که معادل runlevel قدیمی است).

دستور اصلی برای کار با systemd، systemctl است:

› وضعیت یک سرویس
systemctl status nginx

› شروع، توقف و ری‌استارت
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx

› فعال کردن اجرای خودکار در بوت
sudo systemctl enable nginx

› غیرفعال کردن اجرای خودکار
sudo systemctl disable nginx

› فهرست همه سرویس‌های فعال
systemctl list-units --type=service --state=running

در خروجی systemctl status سه وضعیت مهم دیده می‌شود: Loaded (آیا فایل unit خوانده شده)، Active (در حال اجراست یا خیر) و آخرین چند خط لاگ سرویس. این خروجی معمولاً اولین جایی است که باید هنگام بروز مشکل در یک سرویس بررسی شود، پیش از رفتن سراغ لاگ‌های کامل‌تر.

یک مفهوم مهم دیگر، تفاوت بین target و runlevel قدیمی است. در سیستم‌های قدیمی‌تر لینوکس، سیستم در یک عدد به نام runlevel (مثل ۳ یا ۵) اجرا می‌شد که مشخص می‌کرد چه مجموعه‌ای از سرویس‌ها فعال باشند. در systemd، همین مفهوم با target‌هایی مثل multi-user.target (معادل حالت متنی بدون رابط گرافیکی) و graphical.target (معادل حالت با رابط گرافیکی) جایگزین شده، با این تفاوت که target‌ها می‌توانند به یکدیگر وابسته باشند و انعطاف بسیار بیشتری نسبت به یک عدد ساده runlevel دارند. برای دیدن target فعلی سیستم می‌توان از دستور systemctl get-default استفاده کرد.

برای ذخیره‌ی پیشرفت و شرکت در آزمون، وارد شوید — رایگان است.