Як би я змусив роботу з крон працювати кожні 30 хвилин?


224

Я хочу додати crontabзапис для виконання сценарію кожні 30 хвилин, годину та 30 хвилин минулої години чи щось близьке. У мене є наступне, але воно, схоже, не працює на 0.

*/30 * * * *

Який рядок мені потрібно використовувати?

Cron працює на OSX.


Чи вдалося вам примусити роботу свого кронбука? Вашою проблемою може бути не кронтаб, але використання його для використання.
Едді

У ньому працює 2 інші сценарії, по одному щохвилини.
Дарріл Хайн

1
Я чекаю, чи працює одна з відповідей нижче, я просто зачекаю, поки не настане наступні 30 хвилин ... через 3 хвилини.
Дарріл Хайн

2
... Чи не могли ви просто змінити 0,30 на 0,5? Якщо 0,5 працює, чому б не ставити 0,30?
Джордж Стокер

1
Ви ніколи не говорили нам, чи спрацювало година!
Едді,

Відповіді:


487

Зробіть:

0,30 * * * * your_command

1
Чудово працює! У crontab CentOS мені довелося зробити щось на кшталт того, 0,30 * * * * root your_commandде root буде користувачем, який я використовую.
prograhammer

@prograhammer - Чи був цей рядок частиною кореневого кробтабу або когось іншого користувача?
Мухаммед Гусейнбашич

@ MuhamedHuseinbašić гарне запитання, оскільки є 2 різних crontabs (глобальний, а потім користувач). Мені доведеться перевірити і побачити ...
програмамер

100

crontab не розуміє "інтервалів", він розуміє лише "графік"

дійсні години: 0-23 - дійсні хвилини: 0-59

приклад №1

30 * * * * your_command

це означає "бігати, коли хвилина кожної години становить 30 " (триває о 1:30, 2:30, 3:30 тощо)

приклад №2

*/30 * * * * your_command

це означає "бігати, коли хвилина кожної години рівномірно ділиться на 30 " (триває о: 1:30, 2:00, 2:30, 3:00 тощо)

приклад №3

0,30 * * * * your_command

це означає "бігати, коли хвилина кожної години дорівнює 0 або 30 " (триватиме о: 1:30, 2:00, 2:30, 3:00 тощо)

це ще один спосіб досягти тих же результатів, що і в прикладі №2

приклад №4

19 * * * * your_command

це означає "бігати, коли хвилина кожної години дорівнює 19 " (триває: 1:19, 2:19, 3:19 тощо)

приклад №5

*/19 * * * * your_command

це означає "бігати, коли хвилина кожної години рівномірно ділиться на 19 " (триває о: 1:19, 1:38, 1:57, 2:19, 2:38, 2:57 тощо)

Зауважте: кілька уточнень були внесені до цієї публікації різними користувачами, включаючи автора


76

Спробуйте це:

0,30 * * * * your command goes here

Відповідно до офіційної сторінки Mac OS X crontab (5) , /синтаксис підтримується. Таким чином, щоб розібратися, чому це не працює для вас, вам потрібно буде подивитися на журнали для cron. У тих журналах ви повинні знайти чітке повідомлення про помилку.

Примітка: Mac OS X, як видається, використовує Vixie Cron, те саме, що Linux та BSD.


Я завжди використовував * / 30 з успіхом, але не пам'ятаю жодної програми, де вона була надто критичною, якщо вона працювала лише раз на годину, тому я не думаю, що я ніколи перевіряв.
Адам Хоуз

2
@Adam Hawes: Я також використовував * / xx з успіхом у минулому, але в Linux та інших UNIX. Я особисто не пробував Mac OSX. В оригінальному запитанні не було сказано, яка ОС. Деякі старі версії UNIX не підтримують * / xx
Едді,

Ваша відповідь також спрацювала, але у Влада менше представників, тому я дав йому бали.
Дарріл Хайн

1
@DarrylHein хаха, сьогодні Едді має кількість повторень :-p. Я схвалюю Едді.
початківець

10

Якщо ваше завдання cron працює лише на Mac OS X, ви можете скористатися запуском.

З планування робочих місць (офіційні документи Apple) :

Примітка: Хоча це все ще підтримується, cron не є рекомендованим рішенням. Він застарілий на користь запуску.

Ви можете знайти додаткову інформацію (наприклад, запущену сторінку Вікіпедії ) за допомогою простого веб-пошуку.


5

Ви згадуєте, що використовуєте OS X - я раніше використовував cronnix . Це не так прискіпливо, як редагувати його самостійно, але це допомогло мені дізнатися, що стовпці є в один момент. Просто думка.


Інакше це може бути корисним.
Дарріл Хайн

3

Ви можете використовувати обидва символи ' , ' АБО розділити ' / '.
Але, " / " краще.
Припустимо, випадок "кожні 5 хвилин". Якщо ви використовуєте " , ", ви повинні написати cron завдання наступним чином:

0,5,10,15,20,25,30,35,....    *      *     *   * your_command

Це означає, що запускайте your_command щогодини у всі визначені хвилини: 0,5,10, ...

Однак, якщо ви використовуєте '/', ви можете написати таке просте і коротке завдання:

*/5  *  *  *  *  your_command

Це означає, що запустіть your_command в хвилинах, які поділяються на 5 або простішими словами: "0,5,10, ..."

Отже, символ "/" - найкращий вибір завжди;

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.