Systemd configuration


مطالعه این قسمت مطابق با سرفصل از روی کتاب LPIC 2


مسیر ذخیره سازی یونت های مربوط به systemd ( به عنوان مثال sshd.service ) به صورت زیر است :

/lib/systemd/system/


همان طور که در تصویر بالا مشخص است، به صورت دقیق مشخص شده است که قبل و بعد این سرویس چه سرویس هایی راه اندازی می شوند یا مثلا فایل اجرایی مربوطه usr/sbin/sshd/ می باشد و …


همان طور که در runlevel مطرح بود که چه سطحی به عنوان پیش فرض باید برای سیستم در نظر گرفته شود. برای systemd نیز باید یک default target مشخص شود. این کانفیگ در مسیر زیر قرار دارد :

/etc/systemd/system/default.target

اگر فایل بالا را با یک ویرایشگر باز کنید در قسمت مربوط به description می توان دید که چه نوع target یا runlevel ای به صورت پیش فرض برای سیستم در نظر گرفته شده است. به عنوان مثال :

همچنین فایل بالا یک symbolic link بیشتر نیست لذا در صورتی که از آن stat بگیرید می بینید که به یکی از target ها متصل شده است که در واقع آن تارگت می شود به عنوان default برای سیستم


جهت مدیریت target ها و یا service ها و … در سیستم systemd باید از دستور systemctl استفاده کرد.

  • جهت startup یک سرویس با default target سیستم :
systemctl enable sshd.service
  • جهت غیر فعال کردن startup یک سرویس با default target سیستم :
systemctl disable sshd.service
  • جهت متوقف کردن یک سرویس و یا استارت و همچنین مشاهده وضعیت آن :
systemctl start sshd.service
systemctl status sshd.service
systemctl stop sshd.service
systemctl restart sshd.service
systemctl reload sshd.service

نکته : تفاوت restart و reload در بعضی برنامه ها و سرویس ها وجود ندارد اما کلا reload به خواندن دوباره کانفیگ ها و … گفته می شود در صورتی که restart به معنی واقعی کلمه سرویس را غیرفعال و سپس فعال می کند.
جهت مشاهده تارگت یا runlevel فعلی سیستم :

runlevel

جهت مشاهده تارگت یا runlevel پیش فرض سیستم :

systemctl get-default
or
ls -lh /etc/systemd/system/default.target

جهت تغییر به یک runlevel یا target دیگر :

systemctl isolate multi-user.target

جهت تعیین rulevel یا target پیش فرض سیستم :

systemctl set-default multi-user.target
or
systemctl set-default graphical.target

نکته : در صورتی که سرور به صورت GUI نصب شده باشد؛ runlevel یا target پیشفرض همان graphical.target در نظر گفته می شود.
فرضا runlevel یا target سیستم را تغییر دادید. جهت برگشت به همان target ای که به صورت پیشفرض در نظر گرفته شده است؛ بدون این که سیستم ریست شود به صورت زیر عمل می کنیم :

systemctl default
or
systemctl isolate default.target

همچنین می توان سیستم را اصطلاحا به حالت single user برد و عیب یابی را از آنجا دنبال کرد :

systemctl isolate rescue.target