Sysvinit в Linux Ubuntu

Sysvinit в Linux Ubuntu

    Общие понятия

    SysVinit это набор программ для инициализации в стиел SystemV
    /etc/inittab - конфигурационные файлы инициализации
    /etc/initscript - используется init для запуска процессов указанных в файле конфигурации
    /etc/shutdown.allow - список имен учетных записей, используемых shutdown при вызове с опцией -a, чтобы решить следует ли разрешить завершение работы компьютера или нет
    /var/run/powerstatus или /etc/powerstatus - используется init для сбоев питания и процедур восстановления.
    SysVinit предоставляет:
    init и ее управляющую программу telinit
    shutdown, halt, poweroff, reboot
    bootlogd daemon
    killall5, runlevel, fstab-decode
    Ядро автоматически при запуске ищет init в директориях: /sbin, /etc и /bin


    init порождает дочерние процессы согласно настройка в inittab, контролирует их работу, реагирует на команды полученные через его FIFO /run/initctl
    init использует вызовы POSIX openlog(), syslog() и closelog()
    Если установлена переменная среды CONSOLE, init использует ее значение в качестве пути к узлу устройства консоли вместо /dev/console.


    В сообщениях системного журнала init указываются LOG_DAEMON объекта и LOG_INFO.


    inittab определяет процессы, которые должны запускаться с помощью init как во время последовательности загрузки, так и во время нормальной работы


    Уровни выполнения sysvinit обозначаются числом в диапазоне от 0 до 9.
    Процессы, порождаемые init для каждого из этих уровней выполнения, определены в файле /etc/inittab
    1: Однопользовательский (режим сопровождения): вы хотите использовать этот, если у вас возникнут проблемы.
    3: Многопользовательский: обычный режим
    5: Многопользовательский с X11: такой же, как 3, но с X11, загруженным в виртуальный терминал 8 по умолчанию
    0: Остановка
    6: Перезагрузка
    2, 4: Не используется
    При переходе с одного уровня на другой, процессы текущего уровня завершаются, запускаются процессы нового уровня


    Посмотрите/etc/inittab, чтобы увидеть, как это работает.


    Каждая запись файла inittab состоит из четырех полей, разделенных двоеточиями (':'), которым необязательно предшествует последовательность пробелов


    Первое - это поле идентификатора, последовательность символов, которая однозначно идентифицирует запись
    Второе - это поле runlevels, последовательность символов, которая обычно представляет набор уровней выполнения, если это поле пустое, значит команда должна выполняться на любом уровне
    Третье - это поле действия(флаги), оно указывает, когда должна быть выполнена программа, названная в следующем поле, и как она должна быть выполнена:
    boot - выполняется раз, при загрузке системы
    ctraltdel - нажата комбинация клавиш ctrl+alt+del
    initdefault - строка с этим параметром читается при инициализации определяя уровень загрузки
    off - отключить выполнение команды
    once - выполнять команду только один раз
    powerfail - при отключении электроэнергии, соответственно ошибку будет видно только при наличии ибп.
    powerkwait - подача электроэнергии возобновилась
    powerwait - система перешла в режим ожидания(с ибп)
    respawn - если при выполнении появится ошибка, то возобновить программу
    sysinit - команды выполняются перед запуском консоли, точнее до приглашения ввести пароль
    wait - ожидание завершения команды(процесса) т.е. другие действия выполняться не будут(например проверка диска)
    Четвертое и последнее поле - это поле процесса, в нем указывается имя программы или ее путь, а также аргументы программы


    Выбранный уровень при запуске по умолчанию

    id:5:initdefault

    идентификатор: уровни выполнения: действие:процесс


    runlevel - Возвращает предыдущий и текущий уровни запуска, последний уровень запуска записан в /var/run/utmp


    telinit - Говорит init о необходимости смены уровня запуска. После загрузки системы вы можете telinit nсообщить init, чтобы он изменил уровень выполнения на n. затем init считывает inittab и "различает" уровень выполнения n и текущий уровень выполнения - уничтожая процессы, отсутствующие на новом уровне выполнения, и выполняя действия, отсутствующие на старом уровне выполнения


    pidof - возвращает PID указанных програм

    lastb - возвращает ошибки входа в систему, отмеченные в /var/log/btmp


    Ядро может не загрузиться полностью из-за поврежденного или мертвого жесткого диска или файловой системы, отсутствия ключевых файлов и т. д. В этом случае ваш инициализирующий образ может автоматически перейти в однопользовательский режим, который разрешает только вход с правами root и использует /sbin/sulogin вместо /sbin/login для управления процессом входа.


    pf::powerfail:/sbin/shutdown -f -h +2 "Power Failrule;"

    Команда выше будет выполняться при выключении питания на любом уровне
    f - отменяет проверку диска
    h - выключение питания
    f - время в мин. до перезагрузки

    rc.d скрипты

    Initscripts использует rc.d скрипты для управления запуском, остановкой и перезапуском демонов.
    Источник /etc/rc.conf, /etc/rc.d/functions, /etc/conf.d/DAEMON_NAME.
    Используйте функции /etc/rc.d/functions вместо того, чтобы дублировать их функциональность.
    Включите, по крайней мере, start, stop и restart в качестве аргументов скрипта.


    Доступные функции
    Есть некоторые функции, предоставляемые/etc/rc.d/functions:
    stat_busy "message": установить статус занято для печатного сообщения (например, запуск демона [ЗАНЯТО])
    stat_done: установить статус готово (например, запуск демона [ГОТОВО])
    stat_fail: ошибка установки статуса (например, запуск демона [СБОЙ])
    get_pid program: получить PID программы
    ck_pidfile PID-file program: проверьте, действителен ли PID-файл для программы (например, ck_pidfile /var/run/daemon.pid daemon || rm -f /var/run/daemon.pid) [add|rm]_daemon program: добавление / удаление программы для запущенных демонов (хранится в/run/daemons/)
    Полный список функций намного длиннее, и большинство возможностей (например, способ контролировать, могут ли пользователи, не являющиеся пользователями root, запускать daemon) все еще недокументированы и могут быть изучены только из /etc/rc.d/functionsисточника. Смотрите также man rc.d


    invoke-rc.d

    Status services:

    invoke-rc.d php7.4-fpm status
    Источники
    Последнее изменение: 08.10.2024 15:38


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

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