Utilizzo dei timer Systemd come sostituzione dei Cron Jobs
Come utente Linux, probabilmente hai familiarità con cron. Ha funzionato come pianificatore di lavori basato sul tempo Unix per molti anni. Ora molti utenti stanno usando i timer Systemd per sostituire il dominio di cron. Questo articolo discuterà le basi su come impostare il tuo timer systemd e assicurarti che funzioni correttamente sul tuo sistema.
Perché usare i timer Systemd invece di Cron?
Uno dei maggiori punti di forza di Systemd Timers è che è completamente integrato nell’ecosistema Systemd. Ciò significa che è molto facile pianificare e collegare tra loro varie unità di servizio Systemd, rendendo più semplice l’automazione delle attività rispetto a un tradizionale cron daemon.
Un altro vantaggio di Systemd Timers rispetto a Cron è che fornisce un controllo più dettagliato su come attivare i tuoi lavori pianificati. Ad esempio, Systemd Timers ha una OnBootSec
variabile che ti consente di ritardare la tua unità di servizio fino a quando non trascorre un certo lasso di tempo dopo un avvio riuscito.
Infine, i timer Systemd sono anche incredibilmente precisi rispetto a un demone cron standard. Di default, possono tracciare ed eseguire lavori fino a un microsecondo usando la loro AccuracySec
variabile. Questo è incredibilmente utile se si sta eseguendo un computer che richiede tempi esatti per le sue attività pianificate.
Installazione dei timer Systemd
I timer sono una funzione integrata di Systemd. Ciò significa che se stai usando Systemd come tuo demone init, come nel caso di distribuzioni Linux popolari come Arch, Fedora e Ubuntu, la tua macchina sta già sfruttando questa funzionalità su alcuni dei suoi processi di sistema.
Per verificare se la tua distribuzione esegue Systemd, puoi eseguire il seguente comando:
In questo modo verranno elencati tutte le unità, i dispositivi e i timer Systemd attualmente in esecuzione sul sistema.
Elenca i timer esistenti
Il modo più semplice per verificare se un timer è in esecuzione sul tuo account utente corrente è con il seguente comando:
Puoi anche usare il --all
flag per controllare ogni singolo timer nel sistema, compresi quelli inattivi:
In questo modo verranno stampate la data e l’ora di attivazione di ciascun timer, il conto alla rovescia fino a quel momento, quanto tempo è trascorso dall’ultima esecuzione, il nome dell’unità del timer stesso e il servizio attivato da ciascuna unità timer.
Creazione di un nuovo servizio e timer
Il primo passo per creare un timer Systemd è creare o trovare un servizio esistente a cui collegarlo. Questo perché ogni timer deve essere collegato a un’unità di servizio padre. Questa sezione ti guiderà attraverso il processo di creazione di un timer per un servizio Systemd personalizzato.
Inizia creando i file vuoti “.service” e “.timer” nella tua directory home:
Apri il tuo nuovo file di servizio utilizzando il tuo editor di testo preferito:
Incolla il seguente modello all’interno del tuo nuovo file di servizio:
Salva il tuo file “.service”, quindi apri il tuo file “.timer” vuoto utilizzando lo stesso editor di testo:
Incolla il seguente blocco di codice all’interno del tuo file timer:
Vai alla [Timer]
sezione, quindi sostituisci il valore della OnCalendar
variabile con la data e l’ora in cui vuoi che la tua unità Systemd venga eseguita. Nel mio caso, voglio che il mio programma venga eseguito esattamente alle 11:43 AM ogni giorno.
Creazione di un timer monotono
Oltre a impostare un timer che funziona in una data specifica, è anche possibile creare un timer monotono che funziona in base all’attuale uptime del computer. Ciò è utile se si sta pianificando un’attività su una macchina che non è costantemente in esecuzione, come un desktop o un laptop.
Per iniziare, apri il file “.timer”, quindi scorri verso il basso fino alla [Timer]
sezione.
Rimuovi entrambe le variabili OnCalendar
e Persistent
, quindi aggiungi OnBootSec
seguito da un intervallo di tempo per quando vuoi eseguire il tuo file di unità. Ad esempio, impostandolo su “1 ora” dirai a Systemd di avviare il tuo comando un’ora dopo che il tuo computer si è avviato correttamente.
Aggiungi la OnUnitActiveSec
variabile appena sotto OnBootSec
, quindi specifica l’intervallo in cui vuoi che il timer funzioni continuamente dopo l’avvio del sistema. Nel mio caso, lo imposterò su “30min” poiché voglio che il mio task venga eseguito ogni 30 minuti dopo la sua esecuzione iniziale.
Creazione di un timer transitorio
Uno dei vantaggi dell’integrazione profonda di Systemd Timer in Systemd è che può trarre vantaggio dagli altri programmi adiacenti del demone init. Ad esempio, è possibile usare i timer con Systemd-run per creare lavori transitori una tantum sulla tua macchina.
Per creare un semplice timer temporaneo, incolla la seguente riga di codice in una sessione del terminale, quindi sostituisci il valore della --on-calendar
variabile con l’intervallo in cui desideri che il comando venga eseguito:
Aggiungi il comando che vuoi eseguire alla fine della riga, quindi premi Enterper pianificarlo.
È anche possibile creare timer monotoni temporanei utilizzando entrambe le variabili --on-boot
e --on-unit-active
:
Conferma che il tuo timer temporaneo è ora in coda nello scheduler dei lavori di Systemd eseguendo il seguente comando:
Esecuzione del timer Systemd
Per eseguire il tuo nuovo Systemd Timer, devi assicurarti che sia caricato correttamente nella tua sessione Systemd corrente. Per farlo, copia sia il tuo servizio personalizzato che il file timer nella directory di servizio del tuo Systemd:
Ricarica la configurazione corrente del demone init:
Attiva sia il servizio che il timer che hai creato utilizzando systemctl
:
Controlla di aver caricato correttamente il tuo nuovo timer eseguendo: sudo systemctl status my-new-timer.timer
su una nuova sessione di terminale. In questo caso, puoi vedere che il mio timer è ora programmato e pronto per l’esecuzione del sistema.
Imparare a pianificare le attività usando Systemd Timers è solo una parte della comprensione di come funziona la tua macchina Linux sotto il cofano. Approfondisci i meccanismi interni di questo meraviglioso sistema operativo leggendo il nostro articolo di confronto su Grub e Systemd-boot.
Credito immagine: Alexandr Podvalny tramite Unsplash . Tutte le modifiche e gli screenshot sono di Ramces Red.
Lascia un commento