При работе с уровнями выполнения в Linux есть несколько важных нюансов, которые должен учитывать DevOps-инженер. Эти примечания помогут избежать распространённых ошибок и глубже понять работу системы.
Уровни выполнения могут иметь разное назначение в различных дистрибутивах:
# В RedHat/CentOS:
2 - Многопользовательский без NFS
# В Debian/Ubuntu:
2-5 - Обычно идентичны (многопользовательский с сетью)
Всегда проверяйте документацию конкретного дистрибутива.
Современные системы используют systemd, где:
# Вместо:
init 3
# Используйте:
systemctl isolate multi-user.target
Но традиционные команды (init, telinit) остаются для совместимости.
init 0 - Немедленное выключение (аналог poweroff)init 6 - Немедленная перезагрузка (аналог reboot)Важно: Эти команды не спрашивают подтверждения!
Могут быть настроены, но:
/etc/rc.d/rcX.d/Для понимания что включается в конкретном target:
systemctl list-dependencies multi-user.target
В SysVinit:
# Редактировать /etc/inittab:
id:5:initdefault:
В systemd:
systemctl set-default graphical.target
Для серверов обычно используют уровень 3 (или multi-user.target)
Для рабочих станций - уровень 5 (graphical.target)
При проблемах - уровень 1 (rescue.target)
Всегда проверяйте текущий уровень перед изменением:
who -r # или systemctl get-default
В скриптах предпочтительнее использовать:
systemctl reboot # вместо init 6
systemctl poweroff # вместо init 0