Моя текущая проблема заключается в том, что у меня есть процесс, зависший от супервизора, и я хочу убедиться, что он корректно отправляет сеть и т. Д., Но к тому времени, когда супервизор будет отключен, сети нет.
Я отследил это в папке /etc/rc0.d/
здесь. Я вижу, как K90network
будет выполняться до S00killall
, что требует услуги по выводу из строя, включая супервайзера.
[$ subsys = network] && continue
Итак, я не уверен, как S00killall
может когда-либо предотвратить отключение сети, если сеть явно отключена для rc0
I я использую CentOS release 6.8 (Final)
Да, служба network
должна быть остановлена на уровне выполнения 0
перед выполнением сценария killall
. «Убивающие» K *
скрипты выполняются перед «запуском» S *
скриптов.
Есть одно исключение, когда у вас есть корневая файловая система, смонтированная через NFS. Сценарий "Killing" 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
.