====== Utilizzo di journalctl ====== Vedere solo i messaggi recenti **%%-S%%** o **%%--since%%**: journalctl --since 9:30 journalctl --since "10 min ago" Aggiungendo il comando **%%-f%%** oppure **%%--follow%%** è possibile seguire la visualizzazione dei messaggi generati successivamente: journalctl --since "1 min ago" --follow Vedere solo i messaggi di una certa systemd unit: journalctl -u dbus.service ====== Limitare lo spazio usato dai log ====== In Debian il processo **systemd-journald** scrive nella directory **/var/log/journal/**. Oltre a misurare lo spazio occupato dai file è possibile interrogare il servizio stesso per sapere lo spazio utilizzato con: journalctl --disk-usage Il file di configurazione è **/etc/systemd/journald.conf**. Questi alcuni parametri che possono essere impostati per limitare lo spazio utilizzato: SystemMaxUse=500M SystemKeepFree=1G MaxRetentionSec=1month MaxFileSec=1week Dopo aver modificato il file si deve riavviare il servizio: systemctl restart systemd-journald Per liberare spazio al volo è possibile utilizzare i comandi: journalctl --vacuum-time=1month journalctl --vacuum-size=500M ====== Per-user journal e storage volatile ====== L'utente non privilegiato può vedere i **messaggi dei propri servizi** eseguendo il comando: journalctl --user Tuttavia questa possibilità esiste solo se è attivo lo storage su memoria persistente (''Storage=persistent'' in **/etc/systemd/journald.conf**). Se è attivo lo ''Storage=volatile'' è comunque possibile - da parte dell'utente root - vedere i messaggi generati dai serivizi utente utilizzando il **syslog identifier** (**%%-t%%** oppure **%%--identifier=%%**): journalctl -t radio-backend journalctl -t "./radio-frontend" L'identificatore syslog è determinato dal modo in cui il programma utente effettua il logging. Le due modalità più comuni sono: ^ stdout | Se il programma emette i log su stdout e la unit systemd contiene le direttiva ''StandardOutput=journal'', allora l'output viene dirottato su journal. L'identificatore syslog è uguale al nome della unit oppure è determinato dal valore indicato da ''SyslogIdentifier='' nella unit stessa. | ^ systemd nativo | Il programma invia nativamente i messaggi di log a systemd journal. In questo caso l'identificatore syslog è il nome con cui viene invocato il programma, eventualmente completo di path. La libreria normalmente consente di modificare il syslog identifier, ad esempio con il modulo systemd.journal di Python è possibile indicarlo nella funzione ''%%JournalHandler(SYSLOG_IDENTIFIER='myapp')%%''. | È possibile anche filtrare con una regex sul contenuto del messaggio (**%%-g%%** oppure **%%--grep=%%**): journalctl -g radio_frontend ===== Web References ===== * **[[https://community.hetzner.com/tutorials/optimize-journalctl-to-save-server-disk-space-in-linux|Optimize journalctl to save server disk space in Linux]]**