مطالعه این قسمت مطابق با سرفصل از روی کتاب 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