systemctl ابزار اصلی کنترل واحدهای systemd در اوبونتو است: سرویس را اکنون start/stop می‌کند، با enable/disable وضعیت بوت را عوض می‌کند و با status نمای وضعیت و تکه‌ای از لاگ را نشان می‌دهد. این آموزش مسیر مبتدی را طبق مان‌پیج systemctl(1) با چند فرمان روزمره جمع می‌کند.

پیش‌نیازها

آموزش systemctl در اوبونتو؛ start، enable و status
  • اوبونتو با systemd (نصب پیش‌فرض).
  • برای واحدهای سیستمی معمولاً sudo لازم است.
  • نام واحد را وقتی مبهم است با پسوند .service صریح کنید.

دیدن وضعیت و کنترل زمان اجرا

آموزش systemctl در اوبونتو؛ start، enable و status
آموزش systemctl در اوبونتو؛ start، enable و status
  1. وضعیت یک سرویس را ببینید:

systemctl status ssh

  1. برای تغییر وضعیت زمان اجرا (معمولاً با sudo):

sudo systemctl start nginx

sudo systemctl stop nginx

sudo systemctl restart nginx

  1. اگر واحد از reload پیکربندی پشتیبانی کند، reload کمتر از restart قطعی است؛ وگرنه restart مسیر امن‌تری برای اعمال تغییر است.

enable در برابر start

آموزش systemctl در اوبونتو؛ start، enable و status

enable فقط symlink بوت می‌سازد و لزوماً سرویس را همین حالا بالا نمی‌آورد. start بدون enable پس از ریبوت سرویس را برنمی‌گرداند.

  1. ترکیب رایج برای بوت و اجرای اکنون:

sudo systemctl enable --now nginx

  1. برای خاموش ماندن پس از بوت از disable استفاده کنید.
  2. وضعیت را با is-enabled و is-active برای اسکریپت بررسی کنید.
آموزش systemctl در اوبونتو؛ start، enable و status

وقتی status مقدار failed می‌دهد، جزئیات را با journalctl بگیرید:

journalctl -u nginx -e

پس از ویرایش فایل واحد یا drop-in در /etc/systemd/system، ترتیب درست این است: ویرایش، سپس daemon-reload، سپس restart. فراموش کردن daemon-reload باعث می‌شود restart هنوز تعریف قدیمی را بخواند.

نکته: واحدهای کاربر با systemctl --user فضای جدا دارند و با واحدهای سیستمی قاطی نمی‌شوند. در سرور بدون نشست کاربر، معمولاً همان واحدهای سیستمی مدنظر است.

چک‌لیست مبتدی

آموزش systemctl در اوبونتو؛ start، enable و status
  1. نام واحد را با پسوند .service وقتی مبهم است صریح کنید.
  2. enable را با start اشتباه نگیرید؛ در نیاز از --now استفاده کنید.
  3. شکست را قبل از restartهای پیاپی با journalctl بخوانید.
  4. mask فقط وقتی مسدودسازی سخت عمدی است؛ وگرنه disable و رفع ریشه خواناتر است.
  5. واحدهای سیستمی معمولاً sudo می‌خواهند.
  6. با list-units --state=failed سرویس‌های شکست‌خورده را سریع ببینید.

برای سرویس بعدی معمولاً از status شروع می‌کنید یا مستقیم enable --now؟