Итак, я сделал свой сценарий, я бросил его в /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.dailyand 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 вещи всегда решали мои проблемы :)