Как я получу работу cron каждые 30 минут?


224

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

*/30 * * * *

Какую строку мне нужно использовать?

Cron работает на OSX.


Удалось ли вам заставить ваш crontab работать? Возможно, ваша проблема не в crontab, а в том, чтобы заставить его использовать.
Эдди

Он запускает 2 других скрипта, по одному каждую минуту.
Дэррил Хейн

1
Я жду, чтобы увидеть, работает ли один из ответов ниже, просто нужно подождать, пока не пройдут следующие 30 минут ... через 3 минуты.
Дэррил Хейн

2
... Не могли бы вы просто изменить 0,30 на 0,5? Если 0,5 работает, почему бы не 0,30?
Джордж Стокер

1
Вы никогда не говорили нам, сработало ли это в час!
Эдди

Ответы:


487

Делать:

0,30 * * * * your_command

1
Прекрасно работает! В CentOS crontab мне нужно было сделать что-то вроде, 0,30 * * * * root your_commandгде root будет пользователем, которого я использую.
prograhammer

@prograhammer - Была ли эта строка частью корневого каталога или другого пользователя?
Мухамед Хусейнбашич

@ MuhamedHuseinbašić хороший вопрос, так как есть 2 разных crontab (глобальный, а затем пользовательский). Я должен проверить и посмотреть ...
программер

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 lol, Сегодня у Эдди меньше повторений :-p. Я поддерживаю Эдди.
начинающий

10

Если ваша задача cron работает только в Mac OS X, вы можете использовать launchd.

От планирования временных заданий (официальные документы Apple) :

Примечание: хотя это все еще поддерживается, cron не является рекомендуемым решением. Это устарело в пользу launchd.

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


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.