Я написал сценарий bash, чтобы перезапустить Apache, когда он повешен и отправил письмо администратору. Код показан ниже. код перезапустит Apache, если число Apache-процесса равно нулю. Проблема в том, что Apache некоторое время зависает, а процессы все еще не равны нулю, поэтому в этом случае скрипт не перезапустит Apache. Необходим: как мне изменить код для перезапуска Apache, если он повешен, а процессы не равны нулю.скрипт bash для автоматического запуска Apache
#!/bin/bash
if [ `pgrep apache2 -c` -le "0" ]; then
/etc/init.d/apache2 stop
pkill -u www-data
/etc/init.d/apache2 start
echo "restarting....."
SUBJECT="Apache auto restart"
# Email To ?
EMAIL="[email protected]"
# Email text/message
EMAILMESSAGE="apache auto restart done"
# send an email using /bin/mail
/bin/mail -s "$SUBJECT" "$EMAIL" "$EMAILMESSAGE"
fi
Закрепить болезнь, а не симптомы. Вы должны спросить, как определить, почему apache висит (возможно, в ServerFault), а затем исправить это ... не как перезапустить его, когда он зависает. – Juliano
Почему вы заново изобрели колесо здесь, сценарии запуска, найденные в /etc/rc.d или аналогичные (в зависимости от установки unix/linux), имеют возможность выполнить перезапуск, но затем снова проверьте свои журналы ошибок относительно того, почему вы необходимо перезапустить сервер, обычно /etc/rc.d/3/rc.httpd restart или аналогичный ... – t0mm13b
Привет. Джулиано, ты прав. Я ищу основную причину проблемы, но я думаю, что этот тип скриптов является «обязательным», потому что в будущем он может висеть, и этот скрипт будет временным решением проблемы. –