Cron.hourly не працюватиме


54

Гаразд, тому я зробив свій сценарій, я запустив його, /etc/cron.hourlyтоді я chmod 777файл, але він не запуститься (автоматично). Якщо я вручну запускаю, це працює чудово. Чи потрібно мені щось ще робити?


Ця відповідь не повинна була отримати стільки оновлень без назви файлу та вмісту.
користувач невідомий

Відповіді:


13

Чому б не використовувати crontab (/ etc / crontab) і не використовувати * / 1 у годинному полі. Я використовував це для запуску сценарію кожні 5 хв. Він добре працює:

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

6
Використання cron.dailyта друзів працює трохи краще, якщо машина не працює весь час, оскільки анакрон намагається наблизити правильний графік, тоді як звичайний крон просто не запустить їх, якщо машина не працює всю ніч. Для погодинної роботи це, мабуть, не так важливо.
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них виконуються за допомогою механізму виконання частин ( 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замість цього.

Дивлячись на записи хронів у вашому висновку syslog, це слід підтвердити.


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.