tgoop.com/linuxcamp_tg/350
Last Update:
Systemd Timer - альтернатива cron
Если ты используешь cron для запуска скриптов по расписанию - пора бы взглянуть в сторону systemd timer. Это часть системы systemd - более новый и с фишками, которых нет в cron. Разберёмся, зачем он нужен и как с ним работать.
Что умеет systemd timer
systemd timer позволяет запускать задачи по расписанию вместо или в дополнение к cron. Отличается он несколькими вещами:
1) Привязан к сервису systemd (можно логировать, отслеживать статус, перезапускать);
2) Логирует всё через journalctl (никаких потерянных логов). Можно быстро проверить, когда скрипт реально запускался и с каким результатом;
3) Флаг "Persistent=true" позволяет выполнить задачу после включения сервера, если она была пропущена во время выключения;
4) Можно задавать зависимости, например, чтобы очистка выполнялась только после поднятия сети, или после других сервисов;
5) Более гибкое расписание такого вида "OnCalendar=Wed 09:44";
Пример запуска скрипта.
Возьмём тот, что был в прошлом посте. Создадим юнит для сервиса:
$ nano /etc/systemd/system/clean-server.service
[Unit]
Description=Автоматическая еженедельная очистка сервера
[Service]
Type=oneshot
ExecStart=/usr/local/bin/clean-server.sh
Создаем таймер:
nano /etc/systemd/system/clean-server.timer
[Unit]
Description=Таймер для еженедельной очистки сервера
[Timer]
OnCalendar=Sun 02:00
Persistent=true
[Install]
WantedBy=timers.target
Активируем:
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable --now clean-server.timer
Можем проверить статус:
systemctl list-timers | grep clean-server
И посмотреть те самые автоматические логи:
systemctl status cleanup-server.timer
# или
journalctl -u clean-server.timer
Короч, systemd timer - более современный способ управлять задачами по расписанию. Он не заменяет cron полностью, но стоит внимания в большом количестве случаев.
LinuxCamp | #utils #cron
BY LinuxCamp | DevOps
Share with your friend now:
tgoop.com/linuxcamp_tg/350