Путем я разыскал бы, это должно заменить утилиты halt
и shutdown
со сценарием.
Сначала создайте сценарий, такой как следующее в /bin/fakehalt
:
#!/bin/bash
exec >>/tmp/fakehalt.log 2>&1
date
echo "CMD=$0 PID=$$"
ps -ef --forest
echo '========'
Затем установите его с:
chmod a+x /bin/fakehalt
mv /sbin/halt /sbin/halt.orig
ln -s /bin/fakehalt /sbin/halt
mv /sbin/shutdown /sbin/shutdown.orig
ln -s /bin/fakehalt /sbin/shutdown
Это создаст файл журнала в /tmp/fakehalt.log
каждый раз это называют. Это зарегистрирует имя, которым это назвали как (halt
или shutdown
) свой собственный PID и затем древовидная схема всех процессов в то время.
Это должно дать Вам всю необходимую информацию для разыскивания его. Просто просмотрите ps
дерево и находит что названный сценарием.
/sbin/reboot
должна быть символьная ссылка на /sbin/halt
. Если это не, то замените его также.
Если это все еще не получает его, замена /sbin/init
также (поскольку это может также использоваться для перезагрузки системы). Но это опасно, как будто системные перезагрузки, это не подойдет правильно.
Быстрый и грязное решение будет использоваться IP-монитор
и скрипт, который «IFUPDownss» интерфейс.
Сценарий будет:
#!/bin/sh
ip monitor link | while IFS=':' read num name status; do
read extraline # iproute2 outputs physical address on a separate line.
newstate=$(echo "$status"|awk -F' ' '{print $NF}')
if [ "$newstate" = "UP" ]; then
ifup "$name"
elif [ "$newstate" = "DOWN" ]; then
ifdown "$name"
fi
done
Сценарий не проверяет состояние сетевого интерфейса, прежде чем пытаться изменить его, но это не должно быть проблемой.
Использовать его просто разместить его в /OPT/BIN/LinkMonitor.sh
, сделать его исполняемым с помощью chmod + x /opt/bin/linkmonitor.sh
и добавить его в /etc/rc.local
С Ampersand в конце:
/opt/bin/linkmonitor.sh &
Если вам нужно более надежное решение, вы можете быть заинтересованы в отказоустойчивости маршрута .