I servizi su Linux si avviano non appena il sistema si avvia o si riavvia. Ecco come puoi creare un servizio systemd ad avvio automatico sul tuo PC Linux.
systemd è il gestore dei servizi per molte distribuzioni Linux ben note. Un servizio è un'unità di un programma che in genere viene eseguito in background. I servizi, per natura, si avviano automaticamente non appena il sistema si avvia e possono essere eseguiti senza intervento dell'utente.
Se è necessario creare un'attività o un programma ad avvio automatico che venga eseguito ogni volta che si avvia o si riavvia il sistema, è possibile prendere in considerazione la creazione di un nuovo servizio. Impariamo come creare un nuovo servizio systemd personalizzato su Linux.
Passaggio 1: creazione del file di servizio
Sono necessari alcuni passaggi per creare un nuovo file di servizio systemd. Il primo è la creazione del file unit per il servizio. Prima di creare un file di servizio, è necessario comprenderne la struttura.
Studiamo il file di servizio estraendo un vero file di servizio funzionante dal tuo sistema Linux. Di seguito, puoi vedere il file di servizio per il servizio daemon vmtools.
Questo particolare servizio potrebbe non essere presente sul tuo sistema a meno che tu non stia eseguendo anche Linux su VMware con gli strumenti VMware installati. Il servizio in questione non è importante perché tutti i servizi, o meglio i file delle unità di servizio, hanno la stessa struttura di base con alcune personalizzazioni necessarie.
Tutti i file di servizio systemd devono avere tre sezioni: [Servizio], [Unità], E [Installare]e alcuni parametri in ogni sezione. Ecco cosa contiene ogni sezione e perché sono importanti:
1. Unità
IL Unità La sezione include metadati importanti come una descrizione e le dipendenze del servizio. Ha tre parametri: Descrizione, Prima, E Dopo. Come lo stesso suggerisce, il Descrizione Il parametro fornisce un contesto del servizio e cosa fa.
IL Prima E Dopo i parametri definiscono le condizioni da soddisfare per l'esecuzione del servizio. Ad esempio, se stai avviando un servizio di server Web, vorrai che venga avviato solo dopo che il servizio di rete è online. Quindi dovresti impostare il valore di Dopo parametro al servizio di rete.
2. Servizio
IL Servizio sezione contiene due parametri obbligatori: ExecStart, Tipoe alcuni altri parametri facoltativi come ExecReload, e altro ancora.
ExecStart definisce il comando da eseguire all'avvio del servizio mentre il Tipo Il parametro determina il tipo di processo da generare.
3. Installare
Questa sezione ed i suoi dati sono richiamati ogni volta che attivi o disattivi il servizio con il comando systemctl.
Ha un paio di parametri. Uno di quelli comuni e necessari è Ricercato da. IL Ricercato da Il parametro definisce le unità di destinazione che devono essere avviate ogni volta che il servizio è abilitato. Il valore predefinito è target.multiutente.
I parametri menzionati qui non sono gli unici parametri che è possibile impostare in un file unit. È possibile ottenere l'elenco completo dei parametri dal file documentazione ufficiale di systemd.exec o digitando mansystemd.exec in un terminale.
Un file di unità di servizio systemd termina sempre con ".servizio" estensione e deve essere memorizzato nel file /etc/systemd/system/ directory. Crea il file di servizio utilizzando il comando touch con privilegi elevati anteponendolo al sudo comando:
sudo touch /etc/systemd/system/.servizio
Ora che hai creato il file del servizio, passiamo a popolarlo con la sintassi necessaria per rendere il servizio valido e funzionante.
Passaggio 2: configurazione del file di servizio
Per dimostrazione, creerai un servizio di esempio che viene eseguito Nmap per scansionare le porte sulla tua macchina e memorizzare l'output in un file ogni trenta secondi. Per raggiungere questo compito, ecco come strutturare il file dell'unità di servizio:
[Unità]
Description=Dimostrazione del servizio nmap personalizzato.
Dopo=rete.target[Servizio]
Tipo=semplice
Utente=radice
ExecStart=/usr/bin/nmap -sS -O -oN /home//results.txt host locale
Riavvia=sempre
RiavvioSec=30
[Installare]
WantedBy=multiutente.target
Sebbene i parametri menzionati qui siano stati spiegati in precedenza, esaminiamo come influenzano il nostro servizio appena creato ed esploriamo anche quelli nuovi introdotti in questa unità: Ricomincia, RiavviaSez, E Utente.
Ecco cosa significano i parametri in ogni sezione:
- Descrizione: Testo leggibile per descrivere le funzionalità del servizio.
- Dopo=rete.target: Dettatura a systemd da cui dipende questo servizio network.target e dovrebbe iniziare solo dopo il network.target il servizio è stato avviato. Notare che Dopo non viene utilizzato per stabilire alcuna relazione di dipendenza diretta, funge semplicemente da trigger.
- Tipo=semplice: Esistono diversi tipi di servizio. Tuttavia, il servizio in questa dimostrazione è un processo regolare e quindi lo dichiariamo. Puoi trovare tutti i diversi valori per questo nella pagina della documentazione ufficiale collegata in precedenza.
- Riavvia=sempre: Ciò significa che ogni volta che il servizio esce, dovrebbe sempre riavviarsi.
- RiavvioSec=30: Questo imposta l'intervallo tra ogni avvio del servizio a 30 secondi.
- Utente=radice: Ciò definisce che il servizio verrà eseguito come utente root. In questo caso, questo è un passo da fare in quanto Nmap non sarà in grado di funzionare senza i privilegi di root.
- ExecStart: Questa direttiva contiene il percorso assoluto del programma da eseguire insieme a tutti i flag o argomenti richiesti affinché il programma funzioni correttamente.
- WantedBy=multi-user.target: Questo parametro in un file di servizio specifica quale destinazione deve includere o "volere" il servizio. Quando un servizio è incluso in una destinazione, significa che il servizio dovrebbe avviarsi quando il sistema raggiunge quella destinazione durante il processo di avvio. In questo caso, il servizio dovrebbe avviarsi quando il sistema entra in modalità multiutente. La modalità multiutente è uno stato in cui il sistema è completamente avviato e consente a più utenti di accedere e utilizzare il sistema.
Passaggio 3: abilitazione e avvio del servizio
Ora che hai creato il file unit, gli unici passaggi rimasti per attivare il tuo servizio sono abilitarlo ed eseguirlo. Puoi abilitare e avviare il tuo servizio utilizzando il comando systemctl.
Ecco come utilizzare systemctl per abilitare, avviare e controllare lo stato del servizio:
abilita sudo systemctl .servizio
sudo systemctl start .servizio
stato sudo systemctl .servizio
Ora, il tuo servizio personalizzato dovrebbe essere attivo e funzionante! In questo caso, dovresti vedere una scansione di Nmap in esecuzione ogni trenta secondi e l'output viene memorizzato nel file risultati.txt file nella home directory.
Configurare un servizio systemd su Linux è facile!
Sebbene all'inizio l'impostazione di un servizio personalizzato da zero possa sembrare scoraggiante, è un modo abbastanza semplice da impostare avviare un processo auto-eseguibile e non presidiato per svolgere attività ripetitive per te e potenziare il tuo produttività.
Nel servizio demo, abbiamo appena scalfito la superficie di come configurare e impostare un servizio. Per sapere tutto su come personalizzare il servizio, si consiglia di consultare la documentazione ufficiale collegata nella nota.
Se l'impostazione e la manutenzione di un servizio ti sembrano troppo impegnative, considera di provare un modo alternativo per automatizzare le attività ripetitive su Linux.