Introduzione

Systemd è un potente sistema di init utilizzato dalla maggior parte delle moderne distribuzioni Linux per gestire i processi di sistema e di servizio. Una delle sue caratteristiche principali è la capacità di avviare automaticamente i servizi all’avvio. Questo articolo vi guiderà attraverso il processo di configurazione di un servizio da avviare all’avvio utilizzando Systemd, assicurando che le vostre applicazioni critiche vengano eseguite in modo affidabile ogni volta che il sistema viene riavviato.

Capire i servizi Systemd

Systemd utilizza file di unità per definire e gestire i servizi. Questi file di unità sono memorizzati in:

  • Servizi a livello di sistema: /etc/systemd/system/ e /lib/systemd/system/
  • Servizi specifici per l’utente: ~/.config/systemd/user/

Un file di unità di servizio ha tipicamente un’estensione .service e contiene direttive di configurazione che indicano a Systemd come gestire il servizio.

Creare un file di servizio Systemd

Per configurare un servizio da avviare all’avvio, è necessario creare un file di servizio Systemd. Ecco un esempio di come creare un servizio personalizzato.

1. Creare il file di servizio

Eseguite il seguente comando per aprire un nuovo file di servizio in un editor di testo:

sudo nano /etc/systemd/system/myservice.service

2. Definire la configurazione del servizio

Aggiungere il seguente contenuto, modificandolo in base alla propria applicazione:

[Unit]
Description=My Custom Service
After=network.target

[Service]
ExecStart=/usr/bin/myapp
Restart=always
User=myuser
Group=mygroup
WorkingDirectory=/home/myuser/

[Install]
WantedBy=multi-user.target

Spiegazione:

  • After=network.target: Assicura l’avvio del servizio dopo che la rete è disponibile.
  • ExecStart=/usr/bin/myapp: Definisce il comando per avviare il servizio.
  • Restart=always: Assicura che il servizio venga riavviato in caso di errore.
  • User=myuser e Group=mygroup: Esegue il servizio sotto un utente e un gruppo specifici.
  • WantedBy=multi-user.target: Assicura che il servizio venga avviato in modalità multiutente (livello di esecuzione predefinito per la maggior parte dei server).

3. Ricaricare Systemd e abilitare il servizio

Una volta creato il file di servizio, ricaricare Systemd per riconoscere il nuovo servizio:

sudo systemctl daemon-reload

Abilitare il servizio all’avvio:

sudo systemctl enable myservice.service

4. Avviare e verificare il servizio

Avviare il servizio manualmente:

sudo systemctl start myservice.service

Verificare lo stato del servizio:

sudo systemctl status myservice.service

Se tutto è stato configurato correttamente, si dovrebbe vedere l’output che indica che il servizio è in esecuzione.

Gestione del servizio

Ecco alcuni comandi utili per gestire il servizio Systemd:

  • Riavviare il servizio:
    sudo systemctl restart myservice.service
  • Arrestare il servizio:
    sudo systemctl stop myservice.service
  • Disabilitare l’avvio del servizio al boot:
    sudo systemctl disable myservice.service
  • Visualizzare i log relativi al servizio:
    journalctl -u myservice.service --no-pager

Conclusione

L’uso di Systemd per avviare i servizi all’avvio è un modo semplice ed efficace per garantire che le applicazioni critiche rimangano in esecuzione dopo il riavvio del sistema. Configurando correttamente un file di servizio Systemd, abilitandolo all’avvio e gestendolo con systemctl, è possibile migliorare l’affidabilità e l’automazione dell’ambiente Linux.