systemd e journal
Servizi, unit personalizzate, timer e la lettura chirurgica dei log di journald. Ogni comando è verificato e copiabile; in chat basta descrivere cosa vuoi fare.
15 comandi in questa pagina
- Come vedo lo stato di un servizio?
- Come riavvio (o fermo) un servizio systemd?
- Come ricarico la config di un servizio senza riavviarlo?
- Come faccio partire un servizio al boot (o lo tolgo)?
- Come vedo i servizi falliti (e resetto lo stato)?
- A cosa serve systemctl mask (e come lo tolgo)?
- Come creo un servizio systemd per un mio script?
- Come modifico un'unit di sistema senza toccare l'originale?
- Come creo un timer systemd al posto di cron?
- Come leggo i log di un servizio con journalctl?
- Come vedo i log del boot (anche di quello precedente)?
- Come filtro il journal per soli errori?
- Il journal occupa gigabyte: come lo riduco?
- Come rendo persistente il journal tra i riavvii?
- Come leggo i messaggi del kernel (dmesg)?
# Come vedo lo stato di un servizio?
systemctl status nginx
Stato, PID, memoria e le ultime righe di log in un colpo solo: il primo comando di ogni diagnosi.
Approfondisci: Come si gestiscono i servizi Linux con systemctl?
# Come riavvio (o fermo) un servizio systemd?
systemctl restart nginx # stop / start per i singoli passi
restart riparte da zero; se il servizio supporta il reload, c'è la via senza downtime (scheda dopo).
Approfondisci: Come si gestiscono i servizi Linux con systemctl?
# Come ricarico la config di un servizio senza riavviarlo?
systemctl reload nginx # o: systemctl reload-or-restart nginx
reload manda SIGHUP (zero downtime) ma solo se l'unit lo supporta; reload-or-restart fa da solo la scelta.
Approfondisci: Come si gestiscono i servizi Linux con systemctl?
# Come faccio partire un servizio al boot (o lo tolgo)?
systemctl enable --now nginx
systemctl disable --now nginx
--now agisce anche subito, non solo al prossimo boot: enable senza --now non avvia niente oggi.
Approfondisci: Come si gestiscono i servizi Linux con systemctl?
# Come vedo i servizi falliti (e resetto lo stato)?
systemctl list-units --failed
systemctl reset-failed nginx
Il perché del fallimento sta in journalctl -u <servizio> -e; reset-failed pulisce lo stato, non la causa.
Approfondisci: Come si gestiscono i servizi Linux con systemctl?Dove sono i log su Linux (journalctl e /var/log)?
# A cosa serve systemctl mask (e come lo tolgo)?
systemctl mask bluetooth
systemctl unmask bluetooth
mask rende il servizio non avviabile da NIENTE (nemmeno come dipendenza): più forte di disable.
Approfondisci: Come si gestiscono i servizi Linux con systemctl?
# Come creo un servizio systemd per un mio script?
# /etc/systemd/system/mio.service
[Unit]
Description=Mio servizio
After=network-online.target
[Service]
ExecStart=/opt/mio/app
User=mio
Restart=on-failure
[Install]
WantedBy=multi-user.target
# poi: systemctl daemon-reload && systemctl enable --now mio
Dopo OGNI modifica al file serve systemctl daemon-reload, o systemd continua a usare la versione vecchia.
Approfondisci: Come si gestiscono i servizi Linux con systemctl?Bash scripting: le basi che servono (e le trappole)
# Come modifico un'unit di sistema senza toccare l'originale?
systemctl edit nginx # crea un drop-in in /etc/systemd/system/nginx.service.d/
Gli override sopravvivono agli aggiornamenti del pacchetto; modificare il file originale no.
Approfondisci: Come si gestiscono i servizi Linux con systemctl?
# Come creo un timer systemd al posto di cron?
# mio.timer: OnCalendar=daily + Persistent=true, poi:
systemctl enable --now mio.timer
systemctl list-timers
Persistent=true recupera le esecuzioni perse a macchina spenta – il motivo vero per preferirlo a cron.
Approfondisci: Cron: la sintassi spiegata (finalmente)Come si gestiscono i servizi Linux con systemctl?
# Come leggo i log di un servizio con journalctl?
journalctl -u nginx -e # -f per seguirli in diretta
-e salta in fondo (i log recenti), --since "1 hour ago" restringe il periodo.
Approfondisci: Dove sono i log su Linux (journalctl e /var/log)?Come si gestiscono i servizi Linux con systemctl?
# Come vedo i log del boot (anche di quello precedente)?
journalctl -b # boot corrente
journalctl -b -1 -e # il boot precedente, dalla fine
-b -1 è lo strumento per capire un riavvio inatteso; serve il journal persistente (scheda dopo).
Approfondisci: Dove sono i log su Linux (journalctl e /var/log)?
# Come filtro il journal per soli errori?
journalctl -p err -b
journalctl -p warning --since today
Priorità: emerg, alert, crit, err, warning, notice, info, debug – -p err include anche tutto il più grave.
Approfondisci: Dove sono i log su Linux (journalctl e /var/log)?Come si fa security logging fatto bene?Come si gestiscono i servizi Linux con systemctl?
# Il journal occupa gigabyte: come lo riduco?
journalctl --disk-usage
journalctl --vacuum-size=500M
Per renderlo strutturale: SystemMaxUse=500M in /etc/systemd/journald.conf e restart di systemd-journald.
Approfondisci: Dove sono i log su Linux (journalctl e /var/log)?Storage pieno su Proxmox: come liberare spazio senza disastri
# Come rendo persistente il journal tra i riavvii?
mkdir -p /var/log/journal
systemctl restart systemd-journald
Su alcune distro il journal vive in RAM e sparisce a ogni boot: senza questo, niente log del riavvio precedente.
Approfondisci: Dove sono i log su Linux (journalctl e /var/log)?
# Come leggo i messaggi del kernel (dmesg)?
dmesg -T | tail -50 # o: journalctl -k -b
-T traduce i timestamp; qui compaiono OOM killer, errori disco e device che spariscono.
Approfondisci: Dove sono i log su Linux (journalctl e /var/log)?Come si monitora lo stato dei dischi (SMART) e si prevengono i guasti?Quali parametri sysctl impostare per l'hardening del kernel Linux?