Когда я запускаю скрипт вручную, используя root, он работает нормально. когда я выполняю тот же скрипт внутри cron, он не запускается. Я проверил, что cron на самом деле вызывает скрипт, но скрипт не выполняется. Я экспортировал вывод echos из скрипта в текстовый файл, но текстовый файл ничего не записал. Пожалуйста, проверьте этот cron
*/10 * * * * sh /var/www/sym_monitor/restart.sh > /var/www/migrate/root_restart.txt
linux
ubuntu
shell-script
cron
user1597811
источник
источник
/bin/sh -c '/var/www/sym_monitor/restart.sh > /var/www/migrate/root_restart.txt'
или просто:/var/www/sym_monitor/restart.sh > /var/www/migrate/root_restart.txt
, Возможно, вам придется установить исполняемый битrestart.sh
чтобы последний работал.>
в&>
также регистрировать сообщения об ошибках. Если это не поможет, не могли бы вы опубликовать сценарий оболочки?Ответы:
Запись cron верна, только если вы используете crontab -e для ее добавления. Если вы добавляете его непосредственно в / etc / crontab, вам нужно указать имя пользователя, под которым он будет запущен.
В случае успешного создания cron должен помещаться в / var / spool / cron /.
Проверьте разрешения скрипта, chmod + x.
Рекомендуется указывать полный путь к оболочке / bin / sh или вообще исключать его.
* / 10 * * * * / bin / sh /var/www/sym_monitor/restart.sh & gt; /var/www/migrate/root_restart.txt
Кроме того, вы включаете в сценарий строку Шебанга? Он должен начинаться с #! / Bin / sh или #! / Bin / bash
источник
Попробуйте добавить следующее в конец строки crontab:
Теперь пара предположений (вы могли бы добавить сценарий к вопросу, если он не слишком длинный):
Проверьте в своем сценарии, чтобы увидеть, если у вас есть строка, установите
PATH
переменная к тому же, что у вас есть, когда вы делаете:Помните, что в cron не запускаются файлы инициализации оболочки, которые появляются при входе в систему.
Вы уверены, что файл имеет как минимум разрешение READ .... сценарию оболочки нужно больше, чем просто разрешение EXECUTE. Вы могли бы включить
ls
файла тоже.источник