Итак, я сделал свой скрипт, я бросил его в /etc/cron.hourly
, затем I chmod 777
, но он не будет запускаться (автоматически). Если я запускаю его вручную, он работает нормально. Нужно ли мне что-то делать?
Итак, я сделал свой скрипт, я бросил его в /etc/cron.hourly
, затем I chmod 777
, но он не будет запускаться (автоматически). Если я запускаю его вручную, он работает нормально. Нужно ли мне что-то делать?
Почему бы не использовать crontab (/ etc / crontab) и использовать * / 1 в поле часа. Я использовал это для запуска скрипта каждые 5 минут, и он работает хорошо:
# m h dom mon dow user command
* */1 * * * user command
Записи в 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
Если при запуске этой команды он показывает ваш файл, это означает, что он сработал. В противном случае, если ничего не отображается, ваше имя файла недействительно. Р>
Каково было имя вашего скрипта?
Ваша проблема, вероятно, сводится к чрезмерно открытым разрешениям, что позволяет кому-либо редактировать ваш файл. Вместо этого попробуйте 755
.
В записях cron на вашем выходе syslog следует подтвердить это.
Ответ DaithiF должен быть правильным ответом. Р>
Кроме того, у моего скрипта не было #!/bin/bash
в первой строке. Несмотря на то, что сценарий можно было выполнить с помощью командной строки, run-parts
отклонил его, указав «Ошибка формата Exec». Р>
Изменение имени файла из scriptname.sh
в scriptname
и добавление #!/bin/bash
в первую строку позволило моему сценарию работать почасово.
При запуске
crontab -l
- это задача в списке?
если нет, добавьте его
crontab -e
добавить эту строку
0 * * * * yourScript
, если он находится в этом списке, попробуйте добавить путь к языку программирования в начало вашего скрипта
Пример: р>
bash: #!/bin/bash
Эти две вещи всегда решали мои проблемы:)