Уровни выполнения (runlevels) — это концепция, унаследованная из System V Init (SysV), которая определяет различные состояния операционной системы. Хотя современные дистрибутивы перешли на systemd, понимание runlevels важно для работы с legacy-системами.
Традиционно в Linux существуют 7 основных уровней выполнения (0-6):
Уровень | Назначение |
---|---|
0 | Остановка системы (halt) |
1 | Однопользовательский режим (single-user) |
2 | Многопользовательский без сети |
3 | Многопользовательский с сетью (стандартный для серверов) |
4 | Не используется (пользовательский) |
5 | Многопользовательский с графическим интерфейсом |
6 | Перезагрузка |
Каждому уровню соответствуют скрипты в директориях:
/etc/rc0.d/ - для runlevel 0
/etc/rc1.d/ - для runlevel 1
...
/etc/rc6.d/ - для runlevel 6
Скрипты начинающиеся с 'S' (Start) запускаются, с 'K' (Kill) — останавливаются.
# В системах с SysV init
who -r
или
runlevel
init 3 # Переход в многопользовательский режим без GUI
telinit 5 # Альтернативная команда для перехода в уровень 5
В systemd runlevels эмулируются через "targets":
Уровень | Соответствующий target |
---|---|
0 | poweroff.target |
1 | rescue.target |
2 | multi-user.target |
3 | multi-user.target |
4 | multi-user.target |
5 | graphical.target |
6 | reboot.target |
# Просмотр текущего target
systemctl get-default
# Установка default target (аналог runlevel 3)
systemctl set-default multi-user.target
# Временный переход в другой target
systemctl isolate graphical.target
init 1
# Или в systemd
systemctl rescue
# Для SysV init
ls /etc/rc3.d/
# Для systemd
systemctl list-dependencies multi-user.target
Современные рекомендации:
systemctl isolate
вместо init
systemctl enable/disable