Запуск задания 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 часов в день.

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

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

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

* */6 * * *

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

не

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

Андреа Бизелло
источник
0
0 */6 * * *

crontab каждые 6 часов - это обычно используемое расписание cron.

Нилеш Патил
источник
5
Что этот ответ добавляет, чего нет в других ответах? @rkoots уже упоминал эту точную команду.
Прощай, StackExchange 01
«Обычно используется» ? Зачем? Вы можете уточнить?
Питер Мортенсен,
0

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

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

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

rkoots
источник
-3

Пытаться:

0 */6 * * * command

. * должен

rkoots
источник
1
Последняя строка здесь не имеет особого смысла. Вы бы подумали о его расширении?
Halfer
1
похоже, ответ неполный
ajayramesh