Я хотел бы автоматизировать очистку zpool на моем сервере ZFS. Я написал следующую службу systemd как /etc/systemd/system/zfs-scrub.service
)
[Unit]
Description=Scrub ZFS tank pool
[Service]
Type=simple
ExecStart=/bin/sh -c 'zpool scrub `zpool list -H -o name`'
RemainAfterExit=yes
ExecStop=/bin/sh -c 'zpool scrub -s `zpool list -H -o name`'
А также таймер (как /etc/system.d/system/zfs-scrub.timer
):
[Unit]
Description=Run zpool scrub every 1st Saturday
[Timer]
OnCalendar=Sat *-*-* 22:00:00
Запустив его несколько недель назад, я проверил, как он себя ведет. Кажется, что systemd все еще думает, что служба запущена, поэтому таймер не сработал.
Кажется, ExecStatus
нет, поэтому systemd не знает, что служба завершена.
- Я что-то упускаю ? Должен ли я вместо этого написать сценарий, который запускает очистку, выполняет поиск строки состояния zpool и перехватывает сигналы, чтобы остановить очистку, когда systemd сигнализирует об этом?
- Можно ли написать строку
OnCalendar
, что означает «один раз в месяц, только по выходным»?