GrabDuck

Системы инициализации и управления демонами | DebianZILLA

:

init

(сокращение от англ. initialization — инициализация) — cистема инициализации в UNIX и Unix-подобных системах, которая запускает все остальные процессы. Работает как демон и обычно имеет PID 1. Обычно (согласно Filesystem Hierarchy Standard) располагается по пути /sbin/init.

Upstart

Cистема инициализации ОС, которая контролирует запуск демонов в течение загрузки системы, их остановку, а также управление ими во время работы системы. Основанная на событиях замена cистемы инициализации init в UNIX и Linux системах.

Первоначально была разработана для дистрибутива Ubuntu, но затем стала использоваться и в других дистрибутивах Linux, например в Fedora (впоследствии была заменена systemd), как замена UNIX System V init.

В настоящее время признана устаревшей и для многих дистрибутивов планируется переход на systemd.

systemd

Демон инициализации других демонов в Linux, пришедший на замену используемого ранее скрипта инициализации /sbin/init. Его особенностью является интенсивное распараллеливание запуска служб в процессе загрузки системы, что позволяет существенно ускорить старт операционной системы. Название происходит от принятого в Unix добавления суффикса «d» к демонам

Домашняя страница systemd  http://www.freedesktop.org/wiki/Software/systemd
Описание на Wiki https://ru.wikipedia.org/wiki/Systemd

Работа с Upstart

В терминологии Upstart существует два понятия: сервис (service) и задача (task). Главное отличие службы от задачи состоит в том, что служба перезапускается в случае внезапного ее завершения, а задача — нет.

Официальная страница Upstart: https://wiki.ubuntu.com/PrecisePangolin/ReleaseNotes/TechnicalOverviewUpstart/

Поваренная книга Upstart: http://upstart.ubuntu.com/cookbook/

Просмотреть список всех процессов и их состояний.

initctl list | sort

Просмотреть список всех запущенных процессов и их состояний

initctl list | sort | grep running

Запустить процесс.

start mysql

Остановить процесс.

stop mysql

Перезапустить процесс.

restart mysql

Послать сигнал SIGHUP запущенному процессу.

reload mysql

Узнать состояние, в котором находится процесс.

status mysql

Управление запуском сервисов (демонов) при загрузке системы

Конфигурационные файлы запуска процессов находятся в каталоге /etc/init. Что бы запретить запуск определенного сервиса нужно создать файл с именем сервиса и расширением .override в каталоге /etc/init и записать в него значение manual.

В данном примере мы отключим запуск консолей tty2~tty6:

echo "manual" > /etc/init/tty2.override
echo "manual" > /etc/init/tty3.override
echo "manual" > /etc/init/tty4.override
echo "manual" > /etc/init/tty5.override
echo "manual" > /etc/init/tty6.override

Работа с init

Запуск, остановка демона.

invoke-rc.d apache2 start
invoke-rc.d apache2 stop

или тоже самое с помощью service.

service apache2 start
service apache2 stop

Список возможных вариантов действий (зависит от конкретного стартового скрипта)

invoke-rc.d apache2

Usage: apache2 {start|stop|graceful-stop|restart|reload|force-reload|start-htcacheclean|stop-htcacheclean}

или тоже самое с помощью service

service apache2

Usage: apache2 {start|stop|graceful-stop|restart|reload|force-reload|start-htcacheclean|stop-htcacheclean}

Управление запуском сервисов (демонов) при загрузке системы

По умолчанию, в системе использовано 7 уровней инициализации:

  • 0 — остановка системы
  • 1 — загрузка в однопользовательском режиме
  • 2 — загрузка в многопользовательском режиме без поддержки сети
  • 3 — загрузка в многопользовательском режиме с поддержкой сети
  • 4 — не используется
  • 5 — загрузка в многопользовательском режиме с поддержкой сети и графического входа в систему
  • 6 — перезагрузка

Стартовые скрипты находятся с каталоге /etc/init.d.
Конфигурационный файл /etc/inittab (в Ubuntu не используется, см. /etc/init/rc-sysinit.conf)

Стартовые скрипты для каждого уровня находятся в каталогах с /etc/rc0.d до /etc/rc6.d, где цифра после rc соответствует номеру уровня инициализации.

Узнать текущий уровень выполнения можно командами:

runlevel

или

who -r

Вывести список служб и статусы.

sysv-rc-conf --list

Статусы по одной службе.

sysv-rc-conf --list apache2

Добавить службу в автозагрузку для всех уровней инициализации.

update-rc.d apache2 defaults

Добавить службу в автозагрузку для конкретного уровня инициализации.

sysv-rc-conf --level 23 apache2 on

Выполнение этой команды приведет к добавлению в автозагрузку демона apache2 на 2-ой и 3-й уровни инициализации.

Убрать службу из автозагрузки для всех уровней инициализации.

update-rc.d -f apache2 remove

Эта команда удалит все символические ссылки с именем стартового скрипта со всех уровней выполнения (из каталогов /etc/rc0.d~/etc/rc6.d).