Моя текущая проблема заключается в том, что у меня есть процесс, зависший от супервизора, и я хочу убедиться, что он корректно отправляет сеть и т. Д., Но к тому времени, когда супервизор будет отключен, сети нет.
Я отследил это до /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
скрипт называется.