Сценарий инициализации в Linux

Сценарий инициализации в Linux, создание сценария инициализации

    Основные понятия

    Узнать какая система инициализировала процесс № 1 можно с помощью команды:

    ps -p 1

    Или:

    ps -s 1 Или так: file /sbin/init

    Система инициализации SysVinit
    Система инициализации Upstar как замена System V init
    service это команда управления Upstart которая частично используется для совместимости в новых версиях и работает с файлами /etc/init.d
    Система инициализации Service Management Facility
    Система инициализации Systemd


    Сценарии инициализации предназначены для запуска системных демонов. На каждый демон один сценарий. Каждый следующий сценарий ожидает завершение выполнения предыдущего сценария.
    Загрузчик ядра Linux передает управление ядру Linux, который в свою очередь запускает демон системы инициализации (/sbin/init), этот демон носит PID=1 и не завершает свою работу до выключения машины.
    Далее демон читает конфигурационный файл /etc/inittab. В нем демон будет искать значение переменной initdefault которая указывает на уровень исполнения.
    Например уровень 1 соответствует однопользовательскому режиму.
    В файле конфигурации inittab строка si::sysinit:/etc/rc.d/rc.sysinit говорит что независимо от уровня выполнения будет выполняться /etc/rc.d/rc.sysinit. Это сценарий который осуществляет инициализацию аппаратного обеспечения , подключает раздел подкачки, устанавливает значения переменных окружения, заполняет файл /etc/mtab в процессе монтирования fs и мн. др.
    Будут выполняться все сценарии типа rc0-6.d rcS.d
    В директории /etc/init.d находятся сценарии для запуска и остановки демонов

    update-rc.d

    update-rc.d служит для запуска остановки скриптов при старте или выключении системы.
    Узнать текущий уровень исполнения можно с помощью команды runlevel или who -r
    Изменить уровень исполнения можно с помощью команды telinit (/sbin/init)

    Система инициализации Systemd

    Данная система состоит из юнитов.
    Юниты могут взаимодействовать между собой
    Чтобы убедиться, что на машине используется SystemD выполнить следующую команду:

    pstree

    Команда покажет дерево процессов, которое начинается с systemd
    systemctl - команда управления менеджером системы Systemd
    systemctl работает с файлами в /lib/systemd.
    Если в /lib/systemd есть файл для вашей службы, он будет использовать его в первую очередь, а если нет, он вернется к файлу в /etc/init.d
    Следующая команда выводит список назначение системы инициализации.
    systemctl -t target
    Показать все юниты в системе:

    systemctl list-unit-files

    Показать список всех запущенных юнитов:

    systemctl

    Показать юниты, которые плохо кончили

    systemctl --failed

    Проверить наличие службы в автозапуске:

    systemctl is-enabled nginx.service
    init скрипт

    Пример init (далеко не идеал, лишь наглядно демонстрирует принцип работы)

    #!/bin/bash # # Provides: demon1 # Required-Start: $local_fs $remote_fs $network # Required-Stop: $local_fs $remote_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: demon1 # Description: Start the demon1 ### END INIT INFO export DEMON_HOME=home/toly/bash_scripts/DEMON/demon-1 service_name="demon1" start() { echo "Starting demon1..." /$DEMON_HOME/demon1 } stop() { echo "Stopping demon1..." } status() { if (( $(ps -ef | grep -v grep | grep $service_name | wc -l) > 0 )); then echo "$service_name is running!!!" else echo "$service_name is down!!!" fi } case $1 in start|stop|status) $1;; restart) stop; start;; *) echo "Usage : $0 "; exit 1;; esac exit 0
    Источники
    Последнее изменение: 10.10.2024 04:45


    Связанные темы
    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ