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


55

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


Этот ответ не должен был получить столько голосов без названия файла и содержания.
— пользователь неизвестен

Ответы:


13

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

# m h dom mon dow user  command
* */1  * * *   user    command

6
Использование cron.dailyand friends работает немного лучше, если машина не работает все время, потому что anacron пытается приблизиться к правильному расписанию, тогда как обычный cron просто не запустит их, если машина не работает всю ночь. Для почасовой работы это, вероятно, не так важно.
— Poolie

9
Я действительно ценю следующий ответ, поскольку он решает проблему с cron.hourly, а не находит обходной путь.
— Тишма

4
Это не ответ на вопрос
— josh123a123

@poolie Как можно видеть на/etc/crontab : cron.daily, cron.weeklyи cron.monthly работать с Anacron (если таковые имеются) , а по часам run-parts --report /etc/cron.hourly.
— Пабло А

144

Записи в 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

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

Как назывался твой сценарий?


Есть два: cerebro_random_response.sh и Cerebro Temperature.sh не хорошо?
— Switchkick

21
правильно, ничего хорошего :) [a-zA-Z0-9_-] - допустимые символы, поэтому '.' делает его недействительным Это то, что я имел в виду выше, когда «расширение вашего скрипта сделает его недействительным»
— DaithiF

11
OMG, это только спасло огромную головную боль. БЛАГОДАРЮ ВАС! giving your script an extension will make it invalid and result in the job not being run
— Джонатан С. Фишер

Вы также можете использовать --reportдля запуска сценариев.
— Пабло А

5

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

Просмотр записей cron в выходных данных системного журнала должен подтвердить это.


4

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

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

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


-1

Когда ты бежишь

crontab -l

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

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

crontab -e

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

0 * * * * yourScript

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

Пример:

bash: #!/bin/bash

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


Сделано все, и сценарий хорош, он работает как шарм. Он также находится в списке crontab, но ежечасные задачи не выполняются. Все равно спасибо :(
— Switchkick
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.