Команда Linux init
Что такое команда init
initЭто один из самых важных процессов в системе Linux. Это первый процесс пользовательского уровня (PID=1), создаваемый ядром после загрузки системы, отвечающий за запуск и управление всеми остальными процессами в системе.
Ключевые особенности
- Управление процессами: Служит родительским процессом для всех процессов
- Управление уровнями выполнения: Управляет различными рабочими состояниями системы
- Управление службами: Запускает и останавливает системные службы
- Инициализация системы: Выполняет сценарии запуска и конфигурацию
Базовый синтаксис команды init
init [运行级别]
Пояснение уровней выполнения
В системе Linux определено 7 стандартных уровней выполнения:
| Уровень выполнения | Описание | Типичное использование |
|---|---|---|
| 0 | Завершение работы | Состояние завершения работы системы |
| 1 | Однопользовательский режим | Обслуживание системы / права root |
| 2 | Многопользовательский режим (без NFS) | Базовый многопользовательский режим |
| 3 | Полный многопользовательский режим | Стандартный интерфейс командной строки |
| 4 | Зарезервировано | Пользовательский |
| 5 | Режим графического интерфейса | Многопользовательский режим с графическим интерфейсом |
| 6 | Перезагрузка | Перезагрузка системы |
Практическое применение команды init
1. Просмотр текущего уровня выполнения
Пример
# или
runlevel
2. Переключение уровня выполнения
Пример
init 5 # Переключиться в режим графического интерфейса
init 0 # Выключение
init 6 # Перезагрузка системы
3. Обработка аварийных ситуаций
Пример
Эволюция init в современных Linux-системах
1. System V init
Традиционная система инициализации, использует файл конфигурации /etc/inittab
Пример
id:3:initdefault: # Уровень запуска по умолчанию
si::sysinit:/etc/rc.d/rc.sysinit # Сценарий инициализации системы
2. Upstart (использовался в ранних версиях Ubuntu)
Система инициализации, управляемая событиями
3. systemd (современные распространённые дистрибутивы)
Пример
systemctl isolate graphical.target # Эквивалентно init 5
Практическое занятие
Упражнение 1: Эксперимент с переключением уровней запуска
Переключение с графического интерфейса в режим командной строки
init 3
Наблюдайте за изменениями служб, затем переключитесь обратно на графический интерфейс
init 5
Упражнение 2: Знакомство с режимом обслуживания системы
Войти в однопользовательский режим
init 1
Выполнить проверку файловой системы
fsck /dev/sda1
Примечания
- Требования к правам доступа: Команда init обычно требует прав root
- Используйте с осторожностью: Прямое использование init 0 или init 6 может привести к потере несохранённых данных
- Различия между системами: В разных дистрибутивах могут быть разные реализации init
- Влияние на службы: Переключение уровней выполнения остановит/запустит связанные службы
ЧАВО
Вопрос: Почему в моей системе нет файла /etc/inittab?
Ответ: Системы, использующие systemd, больше не нуждаются в inittab; способ настройки изменился
Вопрос: Как установить уровень выполнения по умолчанию?
Для систем с systemd:
systemctl set-default multi-user.target # 相当于运行级别3
Вопрос: В чём разница между командами init и shutdown?
Обе в конечном итоге выключают систему, но shutdown предоставляет больше возможностей (таких как отложенное выключение, широковещательные уведомления и т. д.)
Энциклопедия команд Linux