Estou apenas me perguntando sobre a sincronização de temporizadores systemd / unidades relacionadas. Eu tenho um script de backup em execução por hora / dia / semana. Eu uso temporizadores com Persistent=True
e OnCalendar=...
opções definidas para iniciar as unidades.
O problema é que o systemd lança várias unidades de uma só vez se as unidades forem perdidas devido à máquina ter sido desligada. Como isso pode causar problemas, o script usa um arquivo de trava para garantir que haja apenas uma instância em execução a qualquer momento: Se o arquivo de trava estiver presente durante a execução, o script falhará e nenhum backup será executado. Eu estava apenas imaginando se existe uma maneira no systemd garantir que os jobs não sejam executados em paralelo (parece-me lembrar que isso foi possível no anacron) para evitar essa situação.
Editar: o arquivo de unidade ( [email protected]
) se parece com isto:
[Unit]
Description=rsnapshot (%I) backup
[Service]
Type=oneshot
Nice=19
IOSchedulingClass=3
ExecStart=/usr/bin/rsnapshot %I
Um exemplo de timer está aqui ( rsnapshot-hourly.timer
):
[Unit]
Description=rsnapshot hourly backup
[Timer]
OnCalendar=hourly
Persistent=true
[email protected]
[Install]
WantedBy=timers.target
Um serviço em execução tem esta aparência ( systemctl status [email protected]
):
● [email protected] - rsnapshot (daily) backup
Loaded: loaded (/etc/systemd/system/[email protected]; static; vendor preset: disabled)
Active: activating (start) since Do 2015-07-23 21:42:03 CEST; 1min 2s ago
Main PID: 527 (rsnapshot)
CGroup: /system.slice/system-rsnapshot.slice/[email protected]
├─527 /usr/bin/perl -w /usr/bin/rsnapshot daily
└─560 /bin/rm -rf /media/large_store/backup/bigbox/daily.6/
Tags systemd