Как использовать команду init в Linux

click fraud protection

В этом является родителем всех Linux процессы. Это первый процесс, который запускается при загрузке компьютера и выполняется до завершения работы системы. Это родоначальник всех остальных процессов.

Его основная роль - создавать процессы из скрипта, хранящегося в файле. /etc/inittab. В этом файле обычно хранятся записи, вызывающие В этом порождать Gettys на каждой строке, в которую пользователи системы могут входить. Он также контролирует автономные процессы, необходимые для любой конкретной системы.

Пингвин Смокинг - официальный талисман Linux.
Getty Images / Джон Колтер

Уровни выполнения

А уровень выполнения - это программная конфигурация системы, которая позволяет выполнять только выбранную группу процессов. Процессы, порожденные В этом для каждого из этих уровней выполнения определены в файле / etc / inittab. В этом поддерживает восемь уровней запуска: 0 через 6 а также S или s. Уровень запуска изменяется при запуске привилегированного пользователя Телинит, который посылает соответствующие сигналы В этом, сообщая ему, на какой уровень выполнения перейти.

Уровни выполнения 0, 1 и 6 зарезервированы. Уровень выполнения 0 останавливает систему, уровень выполнения 6 перезагружается система, а уровень выполнения 1 переводит систему в однопользовательский режим. Уровень выполнения S не предназначен для прямого использования, а предназначен для использования скриптами, которые выполняются при запуске уровня выполнения 1.

Уровни выполнения с 7 по 9 действительны, но плохо документированы, потому что обычный Unix варианты не используют их. Уровни выполнения S и s одинаковы.

Загрузка

После В этом выполняется как последний шаг ядро последовательность загрузки, он ищет файл / etc / inittab, чтобы увидеть, есть ли запись типа initdefault. Запись initdefault определяет начальный уровень запуска системы. Если такой записи нет (или нет / etc / inittab вообще), необходимо указать уровень запуска в системная консоль.

Уровень выполнения S переводит систему в однопользовательский режим и не требует файла / etc / inittab. В однопользовательском режиме корневая оболочка открывается на / dev / console.

При входе в однопользовательский режим в этом читает консоль ioctl состояния из /etc/ioctl.save. Если этого файла не существует, в этом инициализирует линию со скоростью 9600 бод и с настройками CLOCAL. Когда в этом выходит из однопользовательского режима, он сохраняет настройки ioctl консоли в этом файле, чтобы можно было повторно использовать их для следующего однопользовательского сеанса.

При первом входе в многопользовательский режим В этом выполняет записи boot и bootwait, чтобы файловые системы могли монтироваться перед тем, как пользователи войдут в систему. Затем все записи, соответствующие процессу уровня запуска.

При запуске нового процесса В этом сначала проверяет, существует ли файл / etc / initscript. Если это так, он использует этот сценарий для запуска процесса.

Каждый раз, когда ребенок кончает, В этом записывает факт и причину смерти в / var / run / utmp и / var / log / wtmp, при условии, что эти файлы существуют.

Смена уровней выполнения

Экран справки Telinit

После того, как он запустит все указанные процессы, В этом ожидает завершения работы одного из своих дочерних процессов, сигнала сбоя питания или пока Telinit не подаст сигнал об изменении уровня выполнения системы. Когда возникает одно из этих трех условий, он повторно проверяет файл / etc / inittab. Новые записи могут быть добавлены в этот файл в любое время. Тем не мение, в этом все еще ожидает выполнения одного из трех вышеуказанных условий. Чтобы обеспечить мгновенный отклик, Телинит Q команда просыпается В этом для повторного изучения файла / etc / inittab.

Если В этом не находится в однопользовательском режиме и получает сбой питания сигнал, он читает файл / etc / powerstatus. Затем начинается команда на основе содержимого этого файла:

  • F(AIL): Отключение питания, ИБП обеспечивает питание. Выполнить powerwait а также сбой питания записи.
  • О(K): Питание восстановлено, выполните Powerokwait записи.
  • L(OW): Пропадает питание, и в ИБП разряжена батарея. Выполнить мощность записи.

Если / etc / powerstatus не существует или содержит что-либо, кроме букв F, O или L, В этом ведет себя так, как будто читает букву F.

Использование SIGPWR и / etc / powerstatus теперь не рекомендуется. Используйте канал управления / dev / initctl в современных Дистрибутивы Linux.

Когда В этом требуется изменить уровень выполнения, он отправляет предупреждающий сигнал SIGTERM всем процессам, которые не определены на новом уровне выполнения. Затем он ждет пять секунд, прежде чем принудительно завершить эти процессы с помощью сигнала SIGKILL. В этом предполагает, что все эти процессы и их потомки остаются в той же группе процессов, что и В этом изначально создан для них. Если какой-либо процесс изменяет принадлежность к группе процессов, он не получает этих сигналов. Такие процессы необходимо прекращать отдельно.

Телинит

Телинит связан с / sbin / init. Он принимает односимвольный аргумент и сигнализирует В этом выполнить соответствующее действие. Следующие аргументы служат директивами для Телинит:

  • 0, 1, 2, 3, 4, 5 или 6: Переключиться на указанный уровень выполнения.
  • а, б, в: Обрабатывать только те записи файла / etc / inittab с уровнем запуска a, b или c.
  • или q: Еще раз проверьте файл / etc / inittab.
  • или s: Переключиться в однопользовательский режим. Иногда однопользовательский режим называют режим восстановления потому что он часто используется для выполнения аварийного ремонта систем.
  • или ты: Выполнить заново (с сохранением состояния). Повторной проверки файла / etc / inittab не происходит. Уровень выполнения должен быть S, s, 1, 2, 3, 4 или 5; в противном случае запрос игнорируется.

Телинит также могу сказать В этом как долго он должен ждать между процессами отправки Сигналы SIGTERM и SIGKILL. По умолчанию - пять секунд, но это значение можно изменить с помощью -t сек вариант.

Телинит могут быть вызваны только пользователями с соответствующими привилегиями.

В В этом двоичная проверка, если это В этом или Телинит посмотрев на его идентификатор процесса. Реальный В этомИдентификатор процесса всегда равен 1. Из этого следует, что вместо вызова Телинит, человек может использовать В этом как ярлык.