Wiki di Michele

systemctl

GuidaUltima modifica: 24/10/2026 Verificata il 24/10/2026

systemctl controlla systemd, il gestore di servizi e di avvio della maggior parte delle distribuzioni moderne (Arch, Debian, Ubuntu, Fedora ecc.).

Sintassi

systemctl [opzioni] comando [unità]

Le unità sono servizi (.service), timer (.timer), socket (.socket), mount (.mount) e altro. Se non scrivi il suffisso, systemctl assume .service.

Per modificare lo stato dei servizi di sistema serve sudo.

Stato di un servizio

systemctl status nginx

Mostra se è attivo, da quando, il PID e le ultime righe di log.

Controlli rapidi, utili negli script:

systemctl is-active nginx
systemctl is-enabled nginx
systemctl is-failed nginx

Avviare, fermare, riavviare

sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginx

Abilitare all'avvio

sudo systemctl enable nginx
sudo systemctl disable nginx

Avviare e abilitare con un solo comando:

sudo systemctl enable --now nginx

Disabilitare e fermare insieme:

sudo systemctl disable --now nginx

Mascherare un servizio

Impedisce che il servizio venga avviato, anche manualmente o come dipendenza:

sudo systemctl mask nome.service
sudo systemctl unmask nome.service

Elencare le unità

Servizi attivi:

systemctl list-units --type=service

Tutti i servizi, anche quelli inattivi:

systemctl list-units --type=service --all

Servizi in errore:

systemctl --failed

File di unità installati e relativo stato di abilitazione:

systemctl list-unit-files --type=service

Timer pianificati:

systemctl list-timers

Leggere e modificare un'unità

Vedere il file di unità completo:

systemctl cat nginx

Modificarlo senza toccare il file originale (crea un override in /etc/systemd/system/nginx.service.d/override.conf):

sudo systemctl edit nginx

Dopo qualsiasi modifica ai file di unità:

sudo systemctl daemon-reload
sudo systemctl restart nginx

Creare un servizio personalizzato

File /etc/systemd/system/mioscript.service:

[Unit]
Description=Il mio script
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=michele
ExecStart=/usr/bin/python3 /home/michele/script.py
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Attivarlo:

sudo systemctl daemon-reload
sudo systemctl enable --now mioscript.service
systemctl status mioscript.service

Servizi utente (senza root)

Ogni utente può avere servizi propri, in ~/.config/systemd/user/:

systemctl --user enable --now mioscript.service
systemctl --user status mioscript.service
journalctl --user -u mioscript.service

Per farli partire anche senza login:

sudo loginctl enable-linger $USER

Gestire il sistema

sudo systemctl reboot
sudo systemctl poweroff
sudo systemctl suspend

Vedere il target (runlevel) corrente e impostarlo:

systemctl get-default
sudo systemctl set-default multi-user.target
sudo systemctl set-default graphical.target

Diagnosi

Un servizio non parte:

systemctl status nome.service
journalctl -u nome.service -b -e

Quali servizi rallentano l'avvio:

systemd-analyze blame
systemd-analyze critical-chain

Reimpostare lo stato di errore di un'unità:

sudo systemctl reset-failed nome.service

Tag

amministrazione-di-sistemacomandilinux

Pagine che parlano di questa

Altre pubblicazioni in questa sezione

Suggerisci una correzione