Запуск задания cron в Linux каждые шесть часов


141

Как я могу запускать команду каждые шесть часов каждый день?

Я пробовал следующее, но не помогло:

/6 * * * * *  mycommand

7
возможный дубликат Как запускать crontab каждые 2 часа
Cas,

2
как насчет * * / 6 * * *
мадалиниваску

Ответы:


325

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

0 */6 * * * /path/to/mycommand

Это означает, что каждый шестой час, начиная с 0, то есть в час 0, 6, 12 и 18, который вы можете записать как

0 0,6,12,18 * * * /path/to/mycommand

спасибо за ответ, это каждые 6 часов с какого времени? время, когда создается cron?
Gandalf StormCrow

спасибо, так что если бы я хотел запускать его с 15:00 каждые 6 часов, это было бы 15 15,23,05,11 * * * /path/to/mycommand?
Gandalf StormCrow

5
Да, хотя первое поле - это минута, которую вы установили на 15, так что это будет 15: 15,23: 15,05: 15 и 11:15. (что не каждый шестой час, кстати, вы могли иметь в виду 0 15,21,3,9 * * *)

6

Вы должны указать путь к вашей команде, поскольку cron работает в сильно урезанной среде. У вас не будет всех переменных среды, которые есть в вашем интерактивном сеансе оболочки.

Рекомендуется указать абсолютный путь к вашему скрипту / двоичному файлу или определить PATH в самом crontab. Чтобы помочь отладить любые проблемы, я бы также перенаправил stdout / err в файл журнала.


1
спасибо за ответ, но если я объявлю переменные среды в моем файле sh, как будто export variable=somethingя все еще могу использовать их в том же скрипте? и я
часто

@ Гэндальф - Да. Вы можете определить все свои переменные env внутри скрипта. Это хорошая идея, поскольку это означает, что ваш скрипт автономен и изолирован от других вещей, которые вы, возможно, захотите запустить в cron,
Брайан Агнью,

4
0 */6 * * * command

Это будет идеальный способ сказать 6 часов в день.

Ваша команда вставляет шесть минут!


3
@ArsenArsen Я почти уверен, что это было потому, что он на самом деле ничего не добавляет к существующему принятому ответу, написанному за 4 года до него.
Adinia

3

Обратите внимание на этот синтаксис :

* */6 * * *

Это означает 60 раз (каждую минуту) каждые 6 часов,

не

1 раз каждые 6 часов.



0

Вам нужно использовать *

0 */6 * * * /path/to/mycommand

Также вы можете обратиться к https://crontab.guru/, который поможет вам лучше планировать ...


-3

Пытаться:

0 */6 * * * command

. * должен


1
Последняя строка здесь не имеет особого смысла. Вы бы подумали о его расширении?
Halfer

1
похоже, ответ неполный
ajayramesh
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.