Я использую этот сценарий для перезапуска веб-сервера apache2, поскольку процесс обновления letsencrypt ssl не перезапускает его после завершения своих действий.
Когда я тестирую его вручную, останавливая сервер и запуская скрипт. Работает нормально. Однако, когда это часть запущенного задания cron, веб-сервер не запускается. Однако в / var / log / syslog у меня есть много строк, в которых говорится, что он пытается запустить веб-сервер.
Вот сценарий:
#!/bin/sh
ps auxw | grep '/usr/sbin/apache2' | grep -v grep > /dev/null
if [ $? != 0 ]
then
logger "starting apache2 - keep-apache2-alive"
sudo service apache2 start
else
logger "apache2 is running - keep-apache2-alive"
fi
Запись crontab выглядит так, выполняется каждые 2 минуты.
*/2 * * * * /home/user/scripts/keep-apache-running.sh
Записи в / var / log / syslog выглядят так:
Dec 30 23:34:01 node root: apache2 is running - keep-apache2-alive
Dec 30 23:36:01 node root: apache2 is running - keep-apache2-alive
Dec 30 23:38:01 node root: starting apache2 - keep-apache2-alive
Dec 30 23:40:01 node root: starting apache2 - keep-apache2-alive
Dec 30 23:42:01 node root: starting apache2 - keep-apache2-alive
Dec 30 23:44:01 node root: starting apache2 - keep-apache2-alive
Dec 30 23:46:01 node root: starting apache2 - keep-apache2-alive
Dec 30 23:48:01 node root: starting apache2 - keep-apache2-alive
Dec 30 23:50:01 node root: starting apache2 - keep-apache2-alive
Думаю, я решил это. Я просмотрел почту root и заметил, что cron сообщает, что не может найти команду "service". Таким образом, / usr / sbin не был включен в путь. Я вошел и жестко запрограммировал абсолютный путь к служебной команде, и теперь он должен работать.
Спасибо.
Думаю, я решил это. Я просмотрел почту root и заметил, что cron сообщает, что не может найти команду "service". Таким образом, / usr / sbin не был включен в PATH. Я вошел и жестко запрограммировал абсолютный путь к служебной команде, и теперь он должен работать.
Вы можете установить PATH в верхней части сценария оболочки или жестко указать абсолютные пути ко всем командам, которые вы вызываете из сценария.
Это помогло мне найти решение.
https://askubuntu.com/questions/23009/why-crontab-scripts-are-not-working