Назад | Перейти на главную страницу

Скрипты инициализации и порядок выключения в centos

Моя текущая проблема заключается в том, что у меня есть процесс, зависший от супервизора, и я хочу убедиться, что он корректно отправляет сеть и т. Д., Но к тому времени, когда супервизор будет отключен, сети нет.

Я отследил это до /etc/rc0.d/ папку здесь, я вижу, как K90network будет выполнен до S00killall который заботится о прекращении работы служб, включая супервайзера. Мне кажется странным, что это порядок, потому что глядя на S00killall в нем есть код, позволяющий избежать отключения сети в случае необходимости.

[ $subsys = network ] && continue

Итак, я не уверен, как S00killall может когда-либо предотвратить выход сети из строя, если сеть явно отключена для rc0

Я использую CentOS release 6.8 (Final)

Да, network служба должна быть остановлена ​​на уровне запуска 0 перед killall скрипт выполняется. "Убийство" K* скрипты выполняются до "запуска" S* скрипты.

Есть одно исключение, когда у вас есть корневая файловая система, смонтированная через NFS. "Убийство" network сценарий предотвращает остановку сети, чтобы поддерживать целостность корневой файловой системы. Здесь stop раздел скрипта:

stop)
        [ "$EUID" != "0" ] && exit 4
        # Don't shut the network down if root is on NFS or a network
        # block device.
        rootfs=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/" && $3 != "rootfs") { print $3; }}' /proc/mounts)
        rootopts=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $4; }}' /etc/mtab)

        if [[ "$rootfs" == nfs* || "$rootopts" =~ _r?netdev ]] ; then
                net_log $"rootfs is on network filesystem, leaving network up"
                exit 1
        fi

Для вашего "зависания" я бы попробовал сделать то же самое. Поставьте аналогичное условие, чтобы сеть работала, или измените порядок сценариев, чтобы supervisord все останавливается до того, как network скрипт называется.