systemd: Creare un nuovo servizio
Qualche tempo fa abbiamo parlato di systemd, oggi vediamo come creare un nostro unit service per avviare qualcosa tramite systemd.
Ad esempio vogliamo avviare uno script in /home/prova/ chiamato prova.py con utente prova.
Creiamo un nuovo file in /lib/systemd/system/ chiamato prova.service e scriviamoci:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[Unit] Description=Prova Service After=multi-user.target [Service] Type=simple ExecStart=/usr/local/bin/python /home/prova/prova.py User=prova Group=prova WorkingDirectory=/home/prova/ Restart=always RestartSec=10 [Install] WantedBy=multi-user.target |
Nel file precedete possiamo evidenziare:
[Unit], determina che questo file è relativa ad una unit per per il servizio
Description un nome generico per il servizio
After=multi-user.target questa riga indica al sistema quando avviare lo script. In questo caso (con la direttiva multi-user.target) informiamo systemd di avviarlo quando il sistema è pronto, dopo il boot, per il login degli utenti. E’ la situazioni tipica per avviare uno script dopo l’avvio del sistema
[Service], indica i dettagli del servizio
Type è la modalità con cui il servizio viene eseguito. simple indica che si tratta di un normale servizio, oppure oneshot indica di eseguire uno script ed uscire. Maggiori dettagli sui tipi sono indicati qui.
ExecStart si tratta del comando da eseguire, nel nostro caso lo script Python
User opzionale, specifica l’utente con cui eseguire lo script, altrimenti viene lanciato con l’utente root
WorkingDirectory opzionale, serve per specificare il runtime environment, eseguendo lo script in una cartella specifica. E’ utile se lo script deve leggere un file, perché la posizione sarà relativa proprio a questa impostazione, piuttosto che dover indicare un percorso assoluto.
Restart=on-failure ci assicuriamo che lo script venga riavviato in caso di crashes/fails. Qui una lista dei possibili valori.
[Install] la sezione che indica quando il servizio va eseguito.
WantedBy=multi-user.target è una riga ridondante che specifica di installare il servizio nel multi-user.target boot level.
Facciamo rileggere gli unit service:
1 |
systemctl daemon-reload |
attiviamo il servizio con:
1 |
systemctl enable prova.service |
infine attiviamo il servizio con:
1 |
systemctl start prova.service |
Per vedere lo stato del servizio:
1 |
systemctl status prova.service |
enjoy!
Ti interessa acquistare un dominio a prezzi ultraconvenienti? clicca qui
Se hai trovato utili le informazioni su questo blog,
Fai una donazione!
Clicca sul bottone qui sotto o almeno clicca sul banner pubblicitario 🙂
Commenta