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