systemd - Unità timer che imitano il comportamento di anacron


13

Ho bisogno di scrivere un'unità timer per una macchina che viene accesa frequentemente (ad es. Installazione desktop classica). Questa unità timer deve essere attivata regolarmente ma non molto spesso (ad es. Settimanalmente, mensilmente).

Ho trovato alcuni approcci ma non sono tutti adatti:

  • Secondo le pagine man solo la OnBootSece le OnStartupSecdirettive saranno attivati se il punto del tempo configurato è nel passato. Ho trovato anche alcuni esempi usando una combinazione di questi con OnActiveSecper definire un evento regolare. Il problema è: ogni volta che la macchina viene avviata il timer attiverà l'unità configurata. Se hai un timer che dovrebbe funzionare UNA VOLTA una settimana / mese che è troppo spesso. Ad esempio: non voglio che i miei registri vengano ruotati tre volte al giorno ...

  • Soluzioni con la OnCalendardirettiva. Se la macchina viene spenta nel momento configurato (principalmente a mezzanotte perché se si omette l'ora nella specifica dell'ora, il valore predefinito è 00:00:00) il timer non verrà attivato dopo l'avvio successivo. Almeno così ho capito. È giusto ?

Quindi ecco la domanda: il
timer con gli eventi del calendario è attivato subito dopo il prossimo avvio se l'ora configurata è passata?
In caso contrario: esiste una soluzione alternativa per ottenere un tale comportamento?


Ok, io sono a conoscenza di questo . È ancora la strada da percorrere? O ci sono soluzioni più eleganti? C'è qualcosa in programma per migliorare la situazione attuale?
mmh,

Risposte:


15

Questa funzione è già stata implementata in systemd (ver> = 212) usando la Persistent=direttiva, quindi è sufficiente inserire Persistent=truenel file unit mentre si utilizza la OnCalendar=direttiva per stabilire la data / ora per eseguire il lavoro.

= persistenti

Accetta un argomento booleano. Se vero, l'ora dell'ultima attivazione dell'unità di servizio viene memorizzata sul disco. Quando il timer è attivato, l'unità di servizio viene attivata immediatamente se sarebbe stata attivata almeno una volta durante il periodo in cui il timer era inattivo. Ciò è utile per recuperare il ritardo sulle corse perse del servizio quando la macchina era spenta. Notare che questa impostazione ha effetto solo sui timer configurati con OnCalendar =.


Non è il contrario? OP chiede di eliminare le corse extra risultanti da avere entrambi OnBootSece OnActiveSec. Persistentè eseguire una volta all'avvio se è stata persa almeno una corsa a causa di un arresto?
X-yuri,

Bene, probabilmente lo intendevi in questo modo .
x-yuri,

0

Secondo questa e-mail sulla mailing list systemd-devel il comportamento desiderato è sulla roadmap e verrà aggiunto in futuro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.