В современных дистрибутивах Linux вы можете использовать таймеры systemd в качестве замены заданиям cron. В этой статье мы покажем, особенности использования и настройки таймеров systemd.
Вывести полный список всех таймеров в Linux:
$ systemctl list-timers --all
Вывести только активные таймеры:
$ systemctl list-timers
Вывести поднобную информацию о конкретном таймере:
$ systemctl status logrotate.timer
Попробуем создать простой таймер, который записывает текущее время в файл currentdata.log.
Сначала создайте конфигурацию сервиса (unit-файл):
$ sudo mcedit /etc/systemd/system/curdat.service
[Unit] Description=Write current data to log file Wants= curdat.times [Service] Type=oneshot ExecStart= /bin/bash -c 'echo $(date) >> /var/log/current-date.log' [Install] WantedBy=multi-user.target
Проверьте, что сервис работает корректно:
$ sudo systemctl daemon-reload
$ sudo systemctl start curdat.service
$ systemctl status curdat.service
Можно посмотреть лог юнита:
$ journalctl -u curdat.service
Теперь настроим регулярный запуск этого сервиса с помощью таймера systemd (будем запускать его каждые 5 минут):
$ sudo mcedit /etc/systemd/system/curdat.timer
[Unit] Description=Write current data to log file every minute Requires=curdat.service [Timer] Unit= curdat.service OnUnitActiveSec=1min OnCalendar=*:0/5 [Install] WantedBy=timers.target
Запустите таймер:
$ sudo systemctl daemon-reload
$ sudo systemctl start curdat.timer
Добавить таймер в автозагрузку:
$ sudo systemctl enable mydf.timer
Проверьте, что этот таймер запускает сервис curdat.service каждые 5 минут:
$ journalctl -u curdat.service
$ journalctl -u curdat.timer
Чтобы отключить и оставить таймер:
$ sudo systemctl disable curdat.timer
$ sudo systemctl stop curdat.timer