Какие аргументы передаются init сценариям во время завершения работы

Я в настоящее время смотрю на запуск и процедуры завершения работы ubunut точного ящера. Насколько я понимаю на завершении работы, система переключается на runlevel 0 и все сценарии с K* выполняются с аргументом stop и все сценарии с S* выполняются с аргументом start.

Теперь взгляд на rc.0 Я вижу следующие сценарии:

lrwxrwxrwx  1 root root   16  1. Jan 2000  K20dhcpcd -> ../init.d/dhcpcd
lrwxrwxrwx  1 root root   20  1. Jan 2000  S35networking -> ../init.d/networking
lrwxrwxrwx  1 root root   14  5. Apr 2013  S90halt -> ../init.d/halt
lrwxrwxrwx  1 root root   20  5. Apr 2013  S60umountroot -> ../init.d/umountroot
lrwxrwxrwx  1 root root   18  5. Apr 2013  S40umountfs -> ../init.d/umountfs
lrwxrwxrwx  1 root root   22  5. Apr 2013  S31umountnfs.sh -> ../init.d/umountnfs.sh
lrwxrwxrwx  1 root root   17  5. Apr 2013  S30urandom -> ../init.d/urandom
lrwxrwxrwx  1 root root   18  5. Apr 2013  S20sendsigs -> ../init.d/sendsigs
lrwxrwxrwx  1 root root   19 26. Aug 2013  K90syslog-ng -> ../init.d/syslog-ng

Что означает umountfs, sendsigs и halt будет выполняться с аргументом start.

Но смотря на код, например, в S90halt Я нахожу следующее:

case "$1" in
  start)
        # No-op
        ;;
  restart|reload|force-reload)
        echo "Error: argument '$1' not supported" >&2
        exit 3
        ;;
  stop)
        do_stop
        ;;
  *)
        echo "Usage: $0 start|stop" >&2
        exit 3
        ;;
esac

Т.е. этот сценарий ничего не делает, когда с этим называют start и только на самом деле останавливает систему, когда с этим называют stop. Я не могу найти ссылку на этот сценарий как сценарий уничтожения, поэтому когда это происходит?

0
задан 16 July 2014 в 18:23

1 ответ

Согласно новомодной поваренной книге Ubuntu:

Ubuntu в настоящее время использует гибридную систему, где базовые сервисы обрабатываются Выскочкой, но дополнительные услуги могут быть выполнены в режиме SystemV прежней версии. Это может казаться нечетным, но полагать, что существуют тысячи пакетов, доступных в Ubuntu через репозитории Вселенной и Мультивселенной и сотни сервисов. Чтобы избежать необходимости изменять каждый пакет для работы с Выскочкой Выскочка позволяет пакетам использовать свой существующий SystemV (и таким образом Debian-совместимый) сценарии.

SystemV используют уровень выполнения для управления системным запуском, завершением работы и перезагрузкой.

В /etc/init.d существующие сценарии, которые останавливается/начинает сервис дескрипторов, это пишет сценарий, следуют /etc/init.d/skeleton и выполняются системой каждый раз runlevel изменение.

Уровень выполнения пронумерован от 0 до 6 и в /etc мы нашли rcX.d папка, один для каждого уровня.

В этих папках существующая символьная ссылка на сценарии в /etc/init.d, поскольку Вы видели, что название этой ссылки конкретно: они запускают с S, или K (S средства запускаются, и средства K Уничтожают), сопровождаемый числом и названием службы.

Когда системная команда изменяет значение runlevel, сценарии в rcX.d каталоге называют, выполняя алфавитный приказ: K сценарии с параметром остановки, S сценарий с запуском. Это правило не относится к двум runlevels 0 (останов) и 6 (перезагрузка). Согласно Главе 9 Руководства политики Debian - Операционная система

В этих runlevels ссылки с префиксом S все еще называют после тех, которые имеют префикс K, но их также называют с остановкой отдельного аргумента.

Так вот почему системный останов.

Эта тема очень широка, я надеюсь, что это небольшое объяснение является достаточно четким.

1
ответ дан 16 July 2014 в 18:23

Другие вопросы по тегам:

Похожие вопросы: