Шпаргалка по основным командам crone

Шпаргалка по основным командам crone с примерами

Формат команды cron

Команда 0 3 * * 0 /usr/bin/docker system prune -af --filter "until=168h" && /usr/bin/docker volume prune -f в cron состоит из двух частей:

  1. Расписание: 0 3 * * 0
  2. Команда: /usr/bin/docker system prune -af --filter "until=168h" && /usr/bin/docker volume prune -f

Разбор расписания (пять полей):

┌───────────── минуты (0 - 59)
│ ┌───────────── час (0 - 23)
│ │ ┌───────────── день месяца (1 - 31)
│ │ │ ┌───────────── месяц (1 - 12)
│ │ │ │ ┌───────────── день недели (0 - 6) (0 - воскресенье)
│ │ │ │ │
│ │ │ │ │
0 3 * * 0
  • 0 - в 0 минут часа
  • 3 - в 3 часа утра
  • * - каждый день месяца
  • * - каждый месяц
  • 0 - только по воскресеньям

Итог: команда выполняется каждое воскресенье в 3:00 утра.

Где хранятся файлы конфигурации cron

1. Системные cron-задачи:

  • /etc/crontab - основной файл конфигурации
  • /etc/cron.d/ - каталог для дополнительных конфигураций
  • /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/, /etc/cron.monthly/ - каталоги для скриптов, выполняемых с указанной периодичностью

2. Пользовательские cron-задачи:

  • /var/spool/cron/crontabs/ - каталог с индивидуальными файлами для каждого пользователя (обычно редактируются через crontab -e)
  • Для просмотра: crontab -l
  • Для редактирования: crontab -e

Особенности:

  1. При редактировании через crontab -e не нужно указывать пользователя - задача будет выполняться от имени текущего пользователя
  2. В системных файлах (/etc/crontab) требуется указать пользователя:
    0 3 * * 0 root /usr/bin/docker system prune -af...
  3. Для root-задач лучше использовать crontab -e от root или размещать в /etc/cron.d/

Проверка cron-задач

После добавления задачи можно проверить:

# Для пользовательских задач
crontab -l

# Для системных задач
cat /etc/crontab
ls /etc/cron.d/

Дополнительные параметры cron

В конец cron-задачи можно добавить перенаправление вывода:

0 3 * * 0 /usr/bin/docker system prune -af --filter "until=168h" && /usr/bin/docker volume prune -f > /var/log/docker-clean.log 2>&1

Где:

  • > /var/log/docker-clean.log - перенаправление stdout в файл
  • 2>&1 - перенаправление stderr в тот же файл