Назад | Перейти на главную страницу

Почему этот сценарий не запускает веб-сервер apache?

Я использую этот сценарий для перезапуска веб-сервера 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