Da System V (SysVinit) a Systemd
A partire dalla versione 259 di Systemd, gli script SystemV sono stati deprecati e già con la versione 260 Systemd tali script non saranno più supportati. Vista l’imminente rilascio della nuova versione di Systemd è arrivato il momento di convertire gli script SystemV (SysV) a systemd. Fortunatamente nei casi più semplici la conversione è veramente basilare.
Uno script SysV solitamente gestisce start, stop e restart tramite un costrutto case. In systemd, queste azioni vengono mappate in sezioni specifiche.
Ecco un esempio di uno script SysV /etc/init.d/mio-servizio
# ... intestazione LSB ...
case "$1" in
start)
/usr/bin/mio-eseguibile --daemon
;;
stop)
killall mio-eseguibile
;;
esac
Questo script sopra può essere trasformato in un nuovo file unit per Systemd /etc/systemd/system/mio-servizio.service
[Unit]
Description=Il Mio Servizio
After=network.target
[Service]
ExecStart=/usr/bin/mio-eseguibile
Type=simple
Restart=on-failure
[Install]
WantedBy=multi-user.target
Ecco una rapida descrizione di come creare il file di unit.
La Sezione [Unit] contiene metadati e dipendenze.
Description: Una breve frase che descrive il servizio.
After: Indica a systemd di aspettare che un altro servizio sia pronto (es. network.target per la rete o mysql.service per il database).
La Sezione [Service] contiene la logica di esecuzione della unit.
Type:
- simple (default): Se il processo resta in primo piano.
- forking: Se il processo si “stacca” dalla shell (tipico dei vecchi demoni).
ExecStart: Il percorso assoluto del comando.
ExecStop: Opzionale. Se non specificato, systemd uccide il processo in modo pulito.
User/Group (facolatativo): Puoi specificare con quale utente far girare il processo (molto più sicuro che farlo girare come root).
Restart: Se messo su on-failure per far sì che il servizio si riavvia da solo se crasha.
La sezione [Install] serve per la configurazione dell’avvio del servizio.
WantedBy: multi-user.target: equivale a dire che il servizio deve partire nel “runlevel 3” (modalità normale multi-utente).
Una volta creato il file unit esso va messo in /etc/systemd/system/ e va ricaricata la configurazione di SystemD (o riavviato il sistema) con il comando:
sudo systemctl daemon-reload
Per abilitare l’avvio automatico del servizio al boot: sudo systemctl enable mio-servizio.service
Per lanciare il servizio: sudo systemctl start mio-servizio.service
Per controllare lo stato del servizio: sudo systemctl status mio-servizio.service

