Запустить crontab для редактирования расписания:
sudo crontab -e
Генератор команд для crontab:
https://crontab-generator.org/
Традиционный cron-формат состоит из пяти полей, разделенных пробелами и последующей команды:
* * * * * <command>
| | | | |
| | | | +---- Дни недели (диапазон: 0-7, где 0 и 7 -- это воскресенье, 1 -- понедельник и т.д.)
| | | +------ Месяцы (диапазон: 1-12)
| | +-------- Дни месяца (диапазон: 1-31)
| +---------- Часы (диапазон: 0-23)
+------------ Минуты (диапазон: 0-59)
Правила:
- Любое из пяти полей может содержать символ * (звездочка) в качестве значения. Это означает полный диапазон позможных значений, например, каждая минута, каждый час и т.д.
- Любое из полей может содержать список значений, разделенных запятыми (например, 1,3,7) и интервал (поддиапазон) значений, обозначаемый дефисом (например, 1-5).
- После звездочки (*) или интервала можно с помощью символа / указать шаг значений. Например, 0-23/2 может использоваться в поле "Часы" для указания того, что действие должно происходить каждые два часа.
- В полях "Месяцы" и "Дни недели" можно вместо числовых значений использовать сокращенные трёхбуквенные названия месяцев (Jan,Feb,...,Dec) и дней недели (Mon,Tue,...,Sun).
- Вместо указания времени через пять полей, можно использовать следующие специальные строки:
string meaning
------ -------
@reboot Run once, at startup.
@yearly Run once a year, "0 0 1 1 *".
@annually (same as @yearly)
@monthly Run once a month, "0 0 1 * *".
@weekly Run once a week, "0 0 * * 0".
@daily Run once a day, "0 0 * * *".
@midnight (same as @daily)
@hourly Run once an hour, "0 * * * *".
Примеры:
Выполнить единожды команду ping каждую минуту каждого часа каждого дня каждого месяца.
* * * * * /sbin/ping -c 1 192.168.0.1 > /dev/null
Делать бэкап конфигурации GitLab ежедневно (символ % нужно обязательно экранировать, иначе команды будет воспринята не до конца: \%):
@daily docker exec gitlab_new /bin/sh -c 'umask 0077; tar cfz /var/opt/gitlab/backups/$(date +"\%s_\%Y_\%m_\%d_gitlab_config.tgz") -C / etc/gitlab'