Как настроить таймеры systemd для запуска трех отдельных задач одну за другой в определенное время?
У меня есть три задачи, которые в настоящее время ежедневно выполняются cron, одна за другой, а именно:
gatekeeper ~ # ls -l /etc/cron.daily/
total 92
-rwxr-xr-x 1 root root 3814 May 10 2019 1task-A.sh
-rwxr-xr-x 1 root root 1406 Jun 28 2015 2task-B.sh
-rwxr-xr-x 1 root root 1414 May 10 2019 3task-C.sh
Мне нужно повторить это с помощью systemd.
Я знаю, что могу создать три одноразовых службы systemd, управляемых тремя файлами таймера systemd, однако это приведет к тому, что три задачи будут выполняться независимо друг от друга, параллельно и не по порядку.
Какую модификацию мне внести в файл службы systemd или файл таймера, чтобы указать, что три задачи при выполнении должны выполняться последовательно (не параллельно) и по порядку (не в случайном порядке).
1 ответ
Попробуйте использовать только 1 таймер и 3 службы. Затем настройте службыTypes=
кoneshot
. УстановивAfter=
иWants=
свойств между службами, вы сможете запускать 3 службы последовательно при срабатывании таймера.
Посмотрите этот пост: https://serverfault.com/questions/900779/systemd-setting-dependentities-between-templated-timer-units .
task-C.timer
:
[Unit]
Description=daily task
[Timer]
OnCalendar=daily
Unit=task-C.service
[Install]
WantedBy=timers.target
task-C.service
:
[Unit]
Description=task C
Wants=task-B.service
After=task-B.service
[Timer]
ExecStart=/usr/bin/task-C.sh
Type=oneshot
[Install]
WantedBy=timers.target