وقتی یک سرویس بالا نمیآید
یکی از رایجترین موقعیتهایی که یک مدیر سیستم با آن روبهرو میشود، سرویسی است که باید اجرا شود اما بالا نمیآید یا بلافاصله بعد از شروع متوقف میشود. مسیر استاندارد عیبیابی این است که ابتدا وضعیت کلی را بررسی کنیم و سپس وارد جزئیات لاگ شویم.
› قدم اول: وضعیت کلی
systemctl status myapp.service
› قدم دوم: لاگ کاملتر همان سرویس
journalctl -u myapp.service -n 50 --no-pager
› قدم سوم: دنبال کردن زنده لاگ حین تلاش مجدد
journalctl -u myapp.service -f
درباره وابستگیها، دستورهای After و Requires در بخش [Unit] نقش
متفاوتی دارند: After فقط ترتیب اجرا را مشخص میکند (اول آن یکی، بعد این)، اما تضمینی نمیدهد که
آن سرویس واقعاً بالا باشد. Requires یک وابستگی سخت است؛ اگر سرویسی که به آن نیاز دارید بالا
نیاید یا از کار بیفتد، این سرویس هم متوقف میشود. برای وابستگی نرمتر از Wants استفاده میشود.
گاهی مشکل از خود فایل unit است، نه برنامه؛ برای بررسی صحت فایل:
systemd-analyze verify myapp.service
و اگر بعد از ویرایش فایل unit تغییرات اعمال نشد، فراموش نکنید daemon-reload را اجرا کنید؛
این یکی از رایجترین اشتباهات تازهکاران است که ساعتها وقتشان را برای پیدا کردن دلیل «تغییری که اعمال
نمیشود» تلف میکند.