101.3 - تغییر runlevelها / boot targets و خاموش یا ریبوت کردن سیستم¶
اهداف یادگیری¶
در این فصل با موارد زیر آشنا میشوید:
- تغییر runlevel در SysVinit یا boot target در systemd
- ورود به حالت تککاربره (single-user mode)
- خاموش و ریبوت کردن سیستم از خط فرمان
- اطلاعرسانی به کاربران قبل از تغییر runlevel یا boot target
- خاتمه صحیح پردازشها هنگام تغییر سطح اجرا
- تنظیم runlevel یا boot target پیشفرض
- آشنایی با Upstart به عنوان جایگزین SysVinit یا systemd
- آگاهی از ACPI برای مدیریت توان سیستم
کلیدواژهها¶
/etc/inittab, shutdown, init, /etc/init.d/, telinit, systemd, systemctl, /etc/systemd/, /usr/lib/systemd/, wall, runlevels, acpi
Runlevels¶
Runlevelها مشخص میکنند سیستم در چه حالت یا مرحلهای قرار دارد. میتوانید آن را مثل "سطوح مختلف زنده بودن" سیستم در نظر بگیرید.
Systemd Targets¶
در systemd به جای runlevelها از targets استفاده میشود که گروهی از سرویسها هستند.
لیست targets:
نمونه خروجی روی Debian:
graphical.target→ رابط گرافیکیmulti-user.target→ حالت چندکاربره با شبکهrescue→ حالت تعمیر با فایلسیستم محلی، بدون شبکهemergency→ فقط root filesystem به صورت read-only، بدون شبکهhalt→ توقف پردازشها و CPUpoweroff→ مشابه halt اما با ارسال سیگنال ACPI برای خاموشی کامل
بررسی target پیشفرض:
تغییر target:
SysV Runlevels¶
در سیستمهای مبتنی بر SysV، runlevelها به شکل زیر تعریف میشوند:
- Red Hat:
- 0: خاموش
- 1: تککاربره (S یا s)
- 2: چندکاربره بدون شبکه
- 3: چندکاربره با شبکه
- 4: قابل تنظیم توسط مدیر سیستم
- 5: چندکاربره با شبکه و گرافیک
-
6: ریبوت
-
Debian:
- 0: خاموش
- 1: تککاربره
- 2: چندکاربره با گرافیک
- 6: ریبوت
بررسی runlevel فعلی:
تغییر runlevel:
خاموش کردن سیستم:
فایل inittab¶
فایل /etc/inittab در SysVinit برای تعریف runlevel پیشفرض و رفتار init استفاده میشود.
نمونه:
فرمت خطوط:
id: شناسه کوتاهrunlevels: سطح اجراaction: نوع اجرا (respawn, wait, once, initdefault, ctrlaltdel)process: دستور یا سرویس
مدیریت سرویسها در SysVinit¶
فایلهای کنترل سرویسها در /etc/init.d/ قرار دارند.
مثال:
یا با دستور service:
خاموش و ریبوت کردن سیستم¶
روش ترجیحی استفاده از دستور shutdown است. این دستور:
- به کاربران هشدار میدهد (با
wall) - ورود کاربران جدید غیر از root را مسدود میکند
- سیگنال
SIGTERMبه پردازشها میفرستد - پس از تأخیر مشخص، سیگنال
SIGKILLارسال میکند
مثالها:
shutdown -r now # ریبوت فوری
shutdown -h +5 "System will halt" # خاموشی در 5 دقیقه
shutdown -c # لغو خاموشی
گزینهها:
- -h → خاموش
- -r → ریبوت
- -t60 → تأخیر 60 ثانیه بین SIGTERM و SIGKILL
دستورات halt, reboot, poweroff¶
halt→ توقف پردازشهاpoweroff→ توقف و ارسال سیگنال ACPI برای خاموشی کاملreboot→ توقف و راهاندازی مجدد
در اکثر توزیعها این دستورات لینکهایی به systemctl هستند.
ACPI (Advanced Configuration and Power Interface)¶
ACPI استانداردی برای مدیریت توان و سختافزار است.
- مدیریت خواب سختافزار
- Plug and Play و hot-swap
- مانیتورینگ وضعیت سیستم
- ارسال سیگنال خاموشی از طریق دستوراتی مثل shutdown
اطلاعرسانی به کاربران¶
ابزارهای اطلاعرسانی:
wall→ ارسال پیام به همه کاربران وارد شده/etc/issue→ پیام قبل از ورود در ترمینال محلی/etc/issue.net→ پیام قبل از ورود در ترمینال راه دور/etc/motd→ پیام روز پس از ورودmesg→ کنترل دریافت پیامهای wall (اما پیامهای shutdown همیشه ارسال میشوند)systemctl→ ارسال پیامهای wall هنگام emergency, halt, reboot, rescue
تمرینهای عملی¶
تمرین 1: بررسی runlevel یا target¶
تمرین 2: تغییر سطح اجرا¶
تمرین 3: خاموش و ریبوت¶
تمرین 4: اطلاعرسانی به کاربران¶
خلاصه¶
در این فصل یاد گرفتیم:
- تفاوت runlevel در SysVinit و target در systemd
- نحوه تغییر سطح اجرا و ورود به حالت تککاربره
- استفاده از
shutdown,halt,reboot,poweroff - نقش ACPI در مدیریت توان و خاموشی سیستم
- اطلاعرسانی به کاربران با ابزارهایی مثل
wall,/etc/motd - ساختار فایل
/etc/inittabو جایگزینی آن با systemd
نکات کلیدی برای آزمون
- تفاوت runlevelهای SysVinit و targetهای systemd
- دستورهای
shutdownو گزینههای آن - نقش ACPI در خاموشی سیستم
- ابزارهای اطلاعرسانی به کاربران
- PID فرآیند init همیشه 1 است