Cron.hourly не будет работать

Итак, я сделал свой сценарий, я сбросил его в /etc/cron.hourly, а затем chmod 777 файл, но он не запустится (автоматически). Если я запускаю его вручную, он работает нормально. Нужно ли что-нибудь еще делать?

55
задан 11 September 2011 в 21:50

5 ответов

Записи в cron.hourly управляются механизмом выполнения частей ( man run-parts для получения дополнительной информации). И run-parts разборчив в отношении того, какие имена файлов он считает действительными.

Например, расширение вашего скрипта сделает его недействительным и приведет к тому, что задание не будет запущено. [a-zA-Z0-9_-] являются допустимыми символами, поэтому '.' делает его недействительным

При добавлении задания в /etc/cron.hourly (или .daily, .weekly и т. Д.), Всегда проверяйте впоследствии, что run-parts фактически запустит его, введя команду:

run-parts --test /etc/cron.hourly
[ 1113] Если при запуске этой команды он показывает ваш файл, значит, он работает. В противном случае, если ничего не отображается, ваше имя файла недействительно.

Как назывался ваш сценарий?

0
ответ дан 11 September 2011 в 21:50

Ваша проблема, вероятно, связана с чрезмерно открытыми разрешениями, которые позволяют любому редактировать ваш файл. Попробуйте вместо этого 755.

Поиск в записях cron в выходных данных системного журнала должен подтвердить это.

0
ответ дан 11 September 2011 в 21:50

Почему бы не использовать crontab (/ etc / crontab) и использовать * / 1 в поле часа. Я использовал это для запуска скрипта каждые 5 минут, и он хорошо работает:

# m h dom mon dow user  command
* */1  * * *   user    command
0
ответ дан 11 September 2011 в 21:50

Ответ DaithiF должен быть правильным.

Кроме того, в моем сценарии не было #!/bin/bash в первой строке. Несмотря на то, что сценарий можно было выполнить с помощью командной строки, run-parts отклонил его, сказав «Ошибка формата Exec».

Изменение имени файла с scriptname.sh на scriptname и добавление #!/bin/bash в первую строку позволило моему скрипту запускаться ежечасно.

0
ответ дан 11 September 2011 в 21:50

Когда вы запускаете

crontab -l

это задание в списке?

, если нет, добавьте его

crontab -e

добавьте эту строку

0 * * * * yourScript

, если он находится в этом списке, попробуйте добавить путь к языку программирования в начало вашего скрипта

Пример:

bash: #!/bin/bash

Эти 2 вещи всегда решали мои проблемы: )

0
ответ дан 11 September 2011 в 21:50

Другие вопросы по тегам:

Похожие вопросы: