Когда я запускаю скрипт вручную, используя root, он работает нормально. когда я выполняю тот же скрипт внутри cron, он не запускается. Я проверил, что cron на самом деле вызывает скрипт, но скрипт не выполняется. Я экспортировал вывод echos из скрипта в текстовый файл, но текстовый файл ничего не записал. Пожалуйста, проверьте этот cron

*/10 * * * *  sh /var/www/sym_monitor/restart.sh > /var/www/migrate/root_restart.txt

2 ответа2

2

Запись cron верна, только если вы используете crontab -e для ее добавления. Если вы добавляете его непосредственно в /etc /crontab, вам нужно указать имя пользователя, под которым он будет запущен.

В случае успешного создания cron должен помещаться в /var /spool /cron /.

Проверьте разрешения скрипта, chmod +x.

Рекомендуется указывать полный путь к оболочке /bin /sh или вообще исключать его.

*/10 * * * */bin/sh /var/www/sym_monitor/restart.sh> /var/www/migrate/root_restart.txt

Кроме того, вы включаете в сценарий строку Шебанга? Это должно начинаться с #!/bin/sh или #!/ Бен / Баш

1

Попробуйте добавить следующее в конец строки crontab:

 2> /var/www/migrate/error.log.txt

Теперь пара предположений (возможно, вы добавили сценарий к вопросу, если он не слишком длинный):

Проверьте в своем сценарии, чтобы увидеть, есть ли у вас строка, задайте переменную PATH для того же, что и у вас, когда вы делаете:

 echo $PATH

Помните, что все, что запускается в cron, не выполняет никаких файлов инициализации оболочки, которые происходят при входе в систему.

Вы уверены, что файл имеет как минимум разрешение READ .... сценарию оболочки нужно больше, чем просто разрешение EXECUTE. Возможно, вы также включили ls файла.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .