Итак, я сделал свой сценарий, я бросил его в /etc/cron.hourly
то я chmod 777
файл , но он не будет работать (автоматически). Если я запускаю его вручную, он работает нормально. Мне нужно сделать что-нибудь еще?
Итак, я сделал свой сценарий, я бросил его в /etc/cron.hourly
то я chmod 777
файл , но он не будет работать (автоматически). Если я запускаю его вручную, он работает нормально. Мне нужно сделать что-нибудь еще?
Ответы:
Почему бы не использовать crontab (/ etc / crontab) и использовать * / 1 в поле часа. Я использовал это для запуска скрипта каждые 5 минут, и он работает хорошо:
# m h dom mon dow user command
* */1 * * * user command
cron.daily
and friends работает немного лучше, если машина не работает все время, потому что anacron пытается приблизиться к правильному расписанию, тогда как обычный cron просто не запустит их, если машина не работает всю ночь. Для почасовой работы это, вероятно, не так важно.
/etc/crontab
: cron.daily
, cron.weekly
и cron.monthly
работать с Anacron (если таковые имеются) , а по часам run-parts --report /etc/cron.hourly
.
Записи в 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
Если при запуске этой команды он показывает ваш файл, значит, он работает. В противном случае, если ничего не отображается, ваше имя файла недействительно.
Как назывался твой сценарий?
giving your script an extension will make it invalid and result in the job not being run
--report
для запуска сценариев.
Ваша проблема, вероятно, связана с чрезмерно открытыми разрешениями, которые позволяют любому редактировать ваш файл. Попробуй 755
вместо этого.
Просмотр записей cron в выходных данных системного журнала должен подтвердить это.
Ответ DaithiF должен быть правильным.
Кроме того, мой сценарий не был #!/bin/bash
в первой строке. Даже если сценарий может быть выполнен с помощью командной строки, run-parts
отклонил его, сказав «Ошибка формата Exec».
Изменение имени файла с scriptname.sh
на scriptname
и добавление #!/bin/bash
в первую строку позволило моему скрипту запускаться ежечасно.
Когда ты бежишь
crontab -l
это задача в списке?
если нет, добавьте его
crontab -e
добавить эту строку
0 * * * * yourScript
если он находится в этом списке, попробуйте добавить путь к языку программирования в начало вашего скрипта
Пример:
bash: #!/bin/bash
Это 2 вещи всегда решали мои проблемы :)