Cron в Ubuntu
- Подробности
- Категория: Сисадмин
- Просмотров: 591
Если нужно что-то сделать и спланировать по расписанию на сервере...
то пригодится 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