Cron в Ubuntu

Если нужно что-то сделать и спланировать по расписанию на сервере...

 

то пригодится Cron в Ubuntu

Он необходим, если нужно спланировать выполнять скрипт раз в час, раз в день, раз в неделю, раз в месяц и тд.

Все задания записываются в файл и открывается он следующей командой:

crontab -e

 Конечно, для начала нужно авторизоваться на своем сервере Ubuntu и только потом вводить данную команду.

Далее после сохранения этот файл можно найти тут /var/spool/cron/crontabs/имя_пользователя , поэтому будьте внимательно ведь обычно требуется выполнение от root.

Написание команд

Сразу пример:

* * * * * /usr/local/bin/serve

вот эти звездочки значат определенное время:

минута час день месяц день_недели /путь/к/исполняемому/файлу

* - означает КАЖДЫЙ РАЗ

то есть скрипт нужно выполнять

каждую минуту  каждый час  каждый день  каждый месяца  каждый день недели 

 

Еще команды для настройки Cron

Посмотреть файл с настройкой суперюзера: 

crontab -l

 

Удалить все команды:

crontab -r

 

Примеры

Выполни скрипт каждую минуту:

* * * * * /usr/local/bin/serve

 

Выполни в ноль минут каждого часа:

0 * * * * /usr/local/bin/serve

 

 

Выполни в ноль часов в ноль минут каждый день

0 0 * * * /usr/local/bin/serve

 

тоже самое, только выполни 15 числа каждого месяца

0 0 15 * * /usr/local/bin/serve

 

 

 

в нулевой день недели каждого месяца / 0 или 7 - это воскресенье , а 1 - это понедельник

0 0 * * 0 /usr/local/bin/serve

 

Более конкретные примеры

Выполни в 15-30 во вторник:

30 15 * * 2 /usr/local/bin/serve

 

сокращенная запись - sun - то есть в воскресенье - sunday

30 15 * * sun /usr/local/bin/serve

 

Для определенного интервала времени применяют "-"

Например, только с 7-19 часов

0 7-19  * * * /usr/local/bin/serve

 

Запятая указывает, что надо сделать это несколько раз:

в 16-05 и в 16-35

5,35 16  * * * /usr/local/bin/serve

 

 Косая черта для указания интервала, например, 1 раз в каждые 10 минут:

*/10 * * * * /usr/local/bin/serve

 

Специальные сокращения времени

  • @reboot - при загрузке, только один раз;
  • @yearly, @annually - раз год;
  • @monthly - раз в месяц;
  • @weekly - раз в неделю;
  • @daily, @midnight - каждый день;
  • @hourly - каждый час.

 

 Например:

Запусти команду 1 раз в час:

@hourly /usr/local/bin/serve

 

Как проверить выполнение

Для этого смотрим логи крона, которые находятся тут /var/log/cron  , такой командой:

grep CRON /var/log/syslog

 

или получить последние 10 строк лога: 

tail /var/log/syslog

 

Перенаправление ошибки работы cron на почту

Добавьте для этого строчку:

MAILTO=Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.

например

 

Логирование 

Что же касается логирования самого cron. По умолчанию в Ubuntu весь вывод cron логируется в файл /var/log/syslog. Если вы хотите, чтобы он записывался в отдельный файл, то вам необходимо отредактировать файл /etc/rsyslog.d/50-default.conf и раскомментировать в нем строку:

#cron.*                         /var/log/cron.log

А затем перезагрузить сервис rsyslog командой:

systemctl restart rsyslog.service

После чего логи cron будут писаться в отдельный файл /var/log/cron.log. Вы так же можете указать свой собственный файл в конфигурационном файле, где вы только что раскомментировали строку.

 

 

 Конструктор по cron - https://crontab.guru/

 

 А вот тут прям на видео показано как настроить cron на серваке: https://saitsozdanie.ru/forum/index.php?topic=9274.0

и еще планировщики в linux

Более старые статьи:

Добавить комментарий


Защитный код
Обновить