У меня следующий синтаксис (который, как я думаю, правильный?), но он запускает команду каждую минуту!
* */4 * * * /cmd.sh
решение1
0 0,4,8,12,16,20 * * * /cmd.sh
Вероятно, я бы сделал так. Это будет запускать задание каждые 4 часа в 00:00, 04:00, 08:00 12:00, 16:00, 20:00.
Это просто немного более многословный способ записи */4, но работать он должен так же.
решение2
В исходном посте до редактирования конфигурация была следующей:
- */4 * * * /cmd.sh
Автор поста не был знаком с Markdown и поставил звездочку в первом столбце, из-за чего он стал выглядеть как маркер. Я отредактировал их пост, чтобы отразить то, что они намеревались опубликовать:
* */4 * * * /cmd.sh
В этой конфигурации автор поста получит то поведение, которое он наблюдал: задание будет запускаться один раз в минуту в течение часов, которые делятся на 4.
Чтобы избежать запуска один раз в минуту, в первом столбце необходимо указать число, например:
15 * * * * whatever...
Он будет запускаться на 15-й минуте каждого часа.
Подводя итог: для запуска один раз в час в часы, которые делятся на 4, используйте следующий синтаксис:
15 */4 * * * whatever...
решение3
Выполните команду crontab -e и добавьте следующую запись
0 */4 * * * путь_к_скрипту
Скрипт будет запускаться каждые 4 часа.
решение4
Проблема в * в первом столбце.
' * */2 * * * /путь-к-скрипту '
это означает, что нужно бегать каждую минуту часа, но делать это нужно только каждые 2 часа