Timer Systemd

Timer Systemd
Nel sistema operativo Linux, SystemD è un gestore di servizi e un gestore di sistema. Agisce come un sistema Init quando viene eseguito come primo processo in avvio. Contiene e tiene traccia dei servizi di spazio utenti. Per avviare i servizi di utenti accessi, inizia con istanze separate. I timer sono file unitari di SystemD che ha un'estensione di ".Timer". Questi file controllano il ".File o eventi del servizio "in un sistema.

Il più delle volte, i timer sono usati in sostituzione di Cron. Ci fornisce il supporto integrato per gli eventi del tempo di calendario. Il vantaggio dei timer sui cronjobs è che forniscono i controlli a grana più fine degli eventi. Questi vengono utilizzati quando un'attività richiede la pianificazione su un sistema operativo Linux. Ad esempio, se vogliamo avviare un processo quando la nostra macchina si avvia, utilizziamo i timer a tale scopo. In precedenza, Cron era lo strumento per fare questo tipo di lavoro. Ma al giorno d'oggi, i timer vengono utilizzati per questi scopi.

I timer sono quasi come Cron in un modo che entrambi forniscono un approccio e un meccanismo per la pianificazione delle attività nel sistema operativo Linux. Cron ha i suoi svantaggi, motivo per cui i timer lo stanno sostituendo. Ad esempio, se vogliamo programmare il nostro backup a 5 la sera e in qualche modo, il nostro sistema si spegne tra le 4:50 e le 5:10, Cron salta il backup in quel caso che uccide lo scopo della programmazione.

Per lavorare con i timer, abbiamo bisogno delle seguenti cose come prerequisiti:

  • Privilegi di radice
  • terminale

Le funzioni dei timer SystemD richiedono due file di configurazione che sono:

Unità timer: L'unità timer tiene traccia di quando utilizzare i file di servizio. Usano un'estensione di ".Timer".

Unità di servizio: Questi sono file di configurazione unitaria. Gestiscono e definiscono i processi di sistema. Loro hanno ".Service "Estensione come precedentemente discusso.

Ora discutiamo di come possiamo programmare un backup del server automatizzato. Un altro vantaggio del servizio SystemD è che non consente alle tue attività di avere più istanze. Se in qualche modo, ricominciamo un'attività mentre è già avviata, salta lo stelo di lancio e lo tiene fino a quando l'attività di esecuzione corrente non ha completato il suo lavoro. Dopo aver configurato il nostro servizio SystemD e messo in programma, creiamo un file con lo stesso nome del nostro servizio.

L'unica differenza è che ha un'estensione di ".timer "e non di servizio. Ad esempio, abbiamo un servizio chiamato "XYZ". In tal caso, abbiamo “XYZ.Servizio "come nome del nostro servizio e" XYZ.timer "come il nome del nostro timer. Un'altra cosa da tenere a mente è che entrambi questi file devono essere nella stessa directory.

Passaggi per creare un timer SystemD

Crea uno script di prova
Questo è uno script di bash di base come esempio:

Linux@Linux-Virtualbox: ~ $ nano test.sh

Lo script precedente stampò la data.

Crea un file di servizio
Ora creiamo un file di servizio o unità per eseguire lo script bash.

Linux@linux-virtualbox: ~ $ nano/etc/systemd/system/new.servizio

Questo è uno script di esempio per creare il file di servizio. Ha due opzioni: una è "unità" e l'altra è "servizio". In questo passaggio, raccontiamo per la prima volta il sistema del nome dell'unità e cosa sta facendo questa unità. Quindi, definiamo un servizio con il tipo di "semplice". Infine, definiamo che il servizio inizia in caso di fallimento.

Crea un file timer
Dopo aver creato il file di servizio, ora creiamo un file timer. Eseguiamo il seguente comando per creare un file timer:

Linux@Linux-VirtualBox: ~ $ nano/etc/systemd/system/test.Timer

Ha tre opzioni: "unità", "timer" e "installa". Ancora una volta, dopo aver eseguito il comando, definiamo cosa sta facendo la nostra unità. Ha un'opzione "timer". Con l'aiuto di cui, diciamo al sistema quando il nostro script è in esecuzione. L'ultima opzione, "Installa", indica quando il nostro servizio inizia in base ai livelli di corsa. Questa opzione è abilitata solo quando un servizio è abilitato con l'aiuto di SystemCtl.

Ora, discutiamo delle opzioni in modo più approfondito per ottenere una presa migliore sui timer.

Unità: Questo specifica il dispositivo che vogliamo attivare quando il timer si esaurisce. Il parametro passato è il nome di un'unità la cui estensione non deve essere ".Timer". Se non siamo in grado di farlo o non vogliamo passare il nome dell'unità, il valore predefinito è il servizio che ha lo stesso nome del nome di ".timer "in quel caso. Come già discusso, l'approccio migliore è che dovremmo mantenere il nome del servizio e il nome del timer lo stesso.

Timer: L'opzione timer trasporta tutte le informazioni sul timer definito. Nell'opzione timer, troviamo tutte le impostazioni che dobbiamo attivare il timer. Le sezioni del timer hanno molte opzioni come:

OnActiveSec =, onbootSec =, onstartupSec =, onunitactiveSec =, onunitinactiveSec =

Nella sezione Timer, diciamo anche al sistema quando eseguire il processo e quando terminare tale processo secondo il fuso orario del server.

La sezione timer ha anche un'opzione molto utile e importante che è:

Oncalender = set

Questa opzione definisce la frequenza con cui viene eseguita un'attività. Ad esempio, se vogliamo programmare un'attività quotidiana, utilizziamo questa opzione come "OnCalendar = Daily". Questo esegue il compito quotidianamente.

Se vuoi essere più specifico, puoi passare anche un datatime specifico in base alle tue esigenze. Un'altra cosa da tenere a mente mentre si lavora con i timer è che i trigger quotidiani sono sempre a mezzanotte, il che è un momento di punta nei sistemi informatici. Quindi, per evitare i problemi durante questo, ti consigliamo di utilizzare "randomizeDelaysc =". Ritarda il programma in modo casuale con una differenza di pochi secondi. Richiede un valore che rappresenta i secondi in cui il timer può essere ritardato.

Il problema è che il giorno viene sempre attivato alle 12:00. Weekly è sempre attivato lunedì mezzanotte. E annualmente viene sempre attivato il primo gennaio. Tutti questi sono tempi di punta e c'è un'interruzione di rete durante tutto il mondo.

Abilita e avvia il timer
Questo è l'ultimo passaggio del nostro compito. Eseguiamo sistematicamente questo passaggio. Per eseguire questa attività, dobbiamo fare un "date-ricarica". Per vedere se viene creato un nuovo file o viene aggiornato un vecchio file, l'intero sistema viene ricaricato.

Risoluzione dei problemi
A volte, non siamo in grado di catturare tutti i problemi in anticipo. Nel timer SystemD, possiamo assicurarci di catturarli verificando le unità del timer "SystemD" prima di abilitare loro. Per fare ciò, utilizziamo il comando "SystemD-Analyze-Verify". Questo comando ci aiuta a scoprire un potenziale problema e risolverlo di conseguenza.
Ci sono anche altri comandi che ci aiutano con la risoluzione dei problemi e la diagnosi dei nostri timer. Ad esempio, esiste un comando che ci aiuta a verificare se il nostro servizio viene eseguito correttamente o no. Il comando è il seguente:

Linux@linux -virtualbox: ~ $ sudo journalctl -s oggi -f -u test.servizio

Questo comando ci mostra quando il servizio è iniziato l'ultima volta e il risultato del nostro comando bash come mostrato nel seguente frammento:

Conclusione

Abbiamo studiato il timer del sistema. Dopo aver ottenuto una revisione dettagliata di ciò che è un timer di sistema e del suo funzionamento, abbiamo implementato un esempio per spiegarti più brevemente l'idea in cui abbiamo spiegato ogni fase in più parti.