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

43

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

    
задан Switchkick 20.10.2010 в 09:55
источник

5 ответов

12

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

# m h dom mon dow user  command
* */1  * * *   user    command
    
ответ дан oli206 20.10.2010 в 13:44
источник
125

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

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

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

run-parts --test /etc/cron.hourly

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

Каково было имя вашего скрипта?

    
ответ дан DaithiF 03.05.2011 в 18:12
4

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

В записях cron на вашем выходе syslog следует подтвердить это.

    
ответ дан Cry Havok 20.10.2010 в 10:24
4

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

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

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

    
ответ дан Ben Lin 07.08.2014 в 23:10
0

При запуске

crontab -l

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

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

crontab -e

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

0 * * * * yourScript

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

Пример:

bash: #!/bin/bash

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

    
ответ дан Wolfy 20.10.2010 в 10:08