Come creare un file di servizio in Linux

Come Creare Un File Di Servizio In Linux



Il sistema systemd init fa ora parte di quasi tutte le distribuzioni Linux. In qualità di amministratore o sviluppatore, crei servizi che systemd può gestire. Ad esempio, se desideri avviare servizi all'avvio o desideri controllarli manualmente, è possibile farlo tramite un file di servizio personalizzato.

In questo tutorial, spiegherò come creare un file di servizio systemd su Linux.







Che cos'è un file di servizio

Prima di andare oltre, capiamo cos'è un file di servizio systemd e come viene creato su Linux.



Un file di servizio systemd contiene le istruzioni impostate per systemd per gestire il servizio. Solitamente contiene tre sezioni:



  • Unità
  • Servizio
  • Installare

IL Unità La sezione contiene informazioni di base sul servizio come una breve descrizione, pagine di documentazione e un percorso per le dipendenze. IL Installare è facoltativa, ma in genere gestisce in quale stato del sistema il servizio deve essere abilitato.





IL Servizio è normalmente inserita tra le sezioni Unità e Installazione. Contiene principalmente il tipo di servizio e il percorso degli eseguibili che essenzialmente sono comandi da eseguire quando si invoca il servizio da systemd.

Ecco come appare una tipica struttura di file di servizio.



[ Unità ]

Direttiva1 =istruzione

Direttiva2 =istruzione



[ Servizio ]

Direttiva1 =istruzione

Direttiva2 =istruzione



[ Installare ]

Direttiva1 =istruzione

Direttiva2 =istruzione

Qui, le direttive sono parametri che accettano il rispettivo input. Ad esempio, il Descrizione la direttiva accetta una stringa del nome del servizio. In modo simile, ExecStart tiene conto del percorso completo dell'eseguibile.

Un tipico file di servizio di ssh.service è riportato di seguito.

Come creare un file di servizio

Per creare un servizio systemd, è necessario comprendere le direttive chiave. In questa guida tratterò le direttive essenziali che possono aiutarti a creare un file di servizio completamente funzionale.

La creazione di un file di servizio prevede più passaggi, iniziamo con la creazione del file di script.

Nota: Per continuare con il metodo menzionato di seguito, è necessario disporre dei privilegi di root.

1. Creazione di una sceneggiatura

Il passo iniziale prevede la creazione del codice che verrà eseguito quando il servizio inizierà a funzionare. Per questo tutorial, sto creando uno script bash che memorizzerà il tempo di attività del sistema Linux e l'utilizzo della memoria.

Creiamo uno script nella directory corrente con il nome di myscript.sh utilizzando l'editor nano.

sudo nano myscript.sh

Ora aggiungi lo script indicato di seguito nel file e salvalo premendo ctrl+x poi E .

#!/bin/bash

eco '>>Ecco il tempo di attività del tuo sistema<<' > casa / lui stesso / miofile.txt

tempo di attività >> casa / lui stesso / miofile.txt

eco '>>Ecco l'utilizzo della memoria del tuo sistema<<' >> / casa / lui stesso / miofile.txt

gratuito -M >> casa / lui stesso / miofile.txt

sonno 60

Lo script contiene un paio di stringhe di eco e tempo di attività E gratuito comandi.

IL tempo di attività Il comando su Linux viene utilizzato per stampare da quanto tempo un sistema è in esecuzione e quanti utenti sono connessi con un carico medio del sistema degli ultimi 1, 5 e 15 minuti.

IL gratuito il comando viene utilizzato per stampare l'utilizzo della memoria del sistema, mentre il file -M flag viene utilizzato per stampare l'output MB .

Per salvare le informazioni in un file di testo, utilizziamo operatori speciali chiamati operatori di reindirizzamento. IL > L'operatore viene utilizzato per inserire testo nel file di testo menzionato. Tuttavia, se il file non esiste già, verrà creato. Mentre il >> L'operatore viene utilizzato per aggiungere il testo nel file. IL sonno il comando viene utilizzato per mantenere l'attività del servizio per una durata minima di un minuto.

Ora rendi eseguibile lo script concedendo le autorizzazioni necessarie.

sudo chmod +x mioscript.sh

Lo script ora ha il permesso di esecuzione, procediamo alla sezione successiva.

Nota: Per rendere il file di servizio privo di errori, utilizzare il percorso assoluto del file nello script bash.

2. Creazione di un file .service

Successivamente, crea un file di servizio con il file .servizio estensione. Il file del servizio deve essere creato nel formato /etc/systemd/system directory. Per prima cosa, vai a questa directory usando il file CD comando.

CD / eccetera / systemd / sistema

È possibile creare il file di servizio in qualsiasi directory e successivamente spostare comunque il file in questa directory.

Sto creando un file di servizio con mioservizio.service nome.

sudo nano mioservizio.service

Ora aggiungi le seguenti righe al file.

[ Unità ]

Descrizione =Il mio servizio

[ Servizio ]

Tipo =semplice

ExecStart = / bidone / bash / casa / lui stesso / script.sh

Ricomincia = in caso di fallimento

[ Installare ]

WantedBy =multiutente.destinazione

Notare che [Unità], [Servizio], E [Installare] Sono maiuscole e minuscole . Il file del servizio non funzionerà se uno di essi viene menzionato in modo errato, come [UNITÀ] o [SERVICE].

Il nome del servizio è specificato come Il mio servizio nel Descrizione direttiva del [Unità] sezione.

IL Tipo del servizio è semplice nel [Servizio] sezione, che è il tipo predefinito. Biforcazione , un colpo , notificare , dbus e inattivo sono alcuni degli altri tipi.

Se desideri rendere il servizio specifico per l'utente, allora il file Utente La direttiva può essere utilizzata anche con il nome utente dell'utente. L'utilizzo di questa direttiva renderà dipendente l'autorizzazione dell'utente del servizio.

Mentre il ExecStart La direttiva contiene il percorso completo dell'eseguibile. Nell'esempio precedente, il file di script myscript.sh è memorizzato in /casa/sam/ directory. Questa direttiva infatti gestisce cosa eseguire quando un servizio viene invocato da systemd. Se il percorso completo del comando non è specificato, verrà automaticamente risolto per correggere percorsi assoluti come /usr/locale/bin , /usr/bin/, E /bidone . È perfettamente corretto utilizzare il nome dell'eseguibile purché si trovi nelle directory dei comandi standard, altrimenti menzionare il percorso assoluto. Si noti che è possibile utilizzare anche comandi multipli separati da punto e virgola (;).

IL [Installare] la sezione è facoltativa; indica tuttavia la modalità di attivazione del servizio. IL WantedBy La direttiva accetta i file di destinazione a livello di esecuzione come parametri. Vari file di destinazione indicavano diversi livelli di esecuzione del sistema come spegni , salvare , multiutente , grafico , E riavviare .

IL target.multiutente significa che il servizio sarà abilitato quando il sistema è in uno stato tale da consentire sessioni multiutente non grafiche.

3. Attivazione del Servizio

Per attivare il servizio, ricaricare innanzitutto le configurazioni di systemd utilizzando systemctl utilità.

sudo ricarica del demone systemctl

Successivamente, attiva nuovamente il servizio utilizzando systemctl comandare con abilitare .

sudo systemctl abilitare mioservizio.service

Per verificare, controlla lo stato del servizio utilizzando il stato del sistemactl comando.

Il servizio è in esecuzione correttamente.

Ora leggiamo il file di testo miofile.txt il servizio creato nel /casa directory.

Come creare un file di servizio Systemd per un utente normale

La procedura di creazione del file di servizio per un utente normale è simile al metodo di creazione di un file di servizio da parte dell'amministratore. Tuttavia, la directory in cui salvare il file di servizio per gli utenti normali è diversa. Gli utenti normali devono inserire i propri file di servizio nel file ~/.config/systemd/utente . Questa directory deve essere creata utilizzando il file mkdir comando.

mkdir ~ / .config / systemd / utente

Per attivare il servizio da parte di un utente normale -utente il comando viene inserito con systemctl invece di sudo .

systemctl --utente ricarica del demone

systemctl --utente abilitare NOME-SERVIZIO.servizio

systemctl --utente stato NOME-SERVIZIO.servizio

IL -utente l'opzione viene utilizzata per gestire i file di servizio systemd dell'utente.

Come rimuovere il file di servizio

Per rimuovere il file del servizio, innanzitutto è necessario arrestare il servizio.

sudo systemctl arresta NOME-SERVIZIO.servizio

Controlla lo stato utilizzando stato del sistemactl comando per sapere se il servizio è interrotto o meno. Quindi rimuovere il file di servizio utilizzando l'estensione rm comando.

sudo rm / eccetera / systemd / sistema / NOME-SERVIZIO.servizio

Ora ricarica il file systemd configurazione.

sudo ricarica del demone systemctl

Conclusione

Il servizio systemd personalizzato è vantaggioso in vari scenari. In questa guida abbiamo imparato come creare un file di servizio systemd personalizzato per un amministratore di sistema e come gli utenti normali possono creare un file di servizio. Inoltre vediamo anche la procedura di rimozione del file di servizio.