Systemd/Таймеры
Таймеры - это файлы модулей systemd, чье имя заканчивается на .timer, которые управляют .service файлами или событиями. Таймеры могут быть использованы в качестве альтернативы cron
.
Таймеры имеют встроенную поддержку событий, основанных на календаре, и монотонных временных событий, а также могут запускаться асинхронно.
Настройка
Следующий пример таймера запускает каждые 5 минут юнит systemd, который вызывает сценарий bash.
systemd.timers."hello-world" = {
wantedBy = [ "timers.target" ];
timerConfig = {
OnBootSec = "5m";
OnUnitActiveSec = "5m";
Unit = "hello-world.service";
};
};
systemd.services."hello-world" = {
script = ''
set -eu
${pkgs.coreutils}/bin/echo "Hello World"
'';
serviceConfig = {
Type = "oneshot";
User = "root";
};
};
Следующий пример запускается один раз в день (в 12:00). При активации он запускает службу немедленно, если пропущено время последнего запуска (опция Persistent=true), например, из-за отключения питания системы.
...
timerConfig = {
OnCalendar = "daily";
Persistent = true;
};
};
More examples can be found at the Arch Wiki and at the systemd.timer
manpage.
Использование
Список активных таймеров и их текущее состояние:
systemctl list-timers
Manually run a service once for testing purposes:
systemctl start hello-world