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


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


48
2017-10-20 07:55


происхождения


Этот ответ не должен был получать много сообщений без имени файла и содержимого. - user unknown


ответы:


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

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

12
2017-10-20 11:44



Я дам вам это и дам вам знать спасибо! - Switchkick
С помощью cron.daily и друзья работают немного лучше, если машина не работает все время, потому что anacron пытается приблизиться к правильному расписанию, тогда как простой cron просто не запускает их, если машина не на всю ночь. Для почасовых заданий это, вероятно, не имеет большого значения. - poolie
Я действительно ценю следующий ответ, поскольку он решает проблему с cron.hourly, вместо того, чтобы найти обходной путь. - tishma
Это не ответ на вопрос - josh123a123
@poolie Как видно из /etc/crontab: cron.daily, cron.weekly а также cron.monthly  работать с анакроном (если есть), но ежечасно run-parts --report /etc/cron.hourly, - Pablo Bianchi


Записи в cron.hourly управляются механизмом запуска частей (man run-parts для получения дополнительной информации). А также run-parts является разборчивым о том, какие имена файлов он считает действительными.

Например, если ваш сценарий расширяет его, он будет недействительным и приведет к тому, что задание не будет запущено. [a-zA-Z0-9_-] являются действительными символами, поэтому '.' делает его недействительным.

При добавлении задания на /etc/cron.hourly ( или .daily, .weekly, и т. д.), всегда проверяйте, что run-parts фактически выполнит его, выполнив команду:

run-parts --test /etc/cron.hourly

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

Каково было имя вашего скрипта?


134
2018-05-03 16:12



Есть два: cerebro_random_response.sh и Cerebro Temperature.sh не так ли? - Switchkick
правильно, не хорошо :) [a-zA-Z0-9_-] - действительные символы, поэтому '.' делает его недействительным. Это то, что я имел в виду выше, «давая вашему сценарию расширение, сделает его недействительным» - DaithiF
oMG, Это просто спасло огромную головную боль. СПАСИБО! giving your script an extension will make it invalid and result in the job not being run - Jonathan S. Fisher
Вы также можете использовать --report для фактического запуска скриптов. - Pablo Bianchi


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

Если вы посмотрите в записи cron на вашем выходе syslog, убедитесь в этом.


4
2017-10-20 08:24



Это все равно, Джо, спасибо. - Switchkick


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

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

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


4
2017-08-07 21:10





Когда вы запускаете

crontab -l

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

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

crontab -e

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

0 * * * * yourScript

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

Пример:

bash: #!/bin/bash

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


0
2017-10-20 08:08



Сделал все, и сценарий хорош, он работает как шарм. Это также в списке crontab, но не почасовая задача. Спасибо, в любом случае :( - Switchkick