diff --git a/Journalctl.md b/Journalctl.md new file mode 100644 index 0000000..6299c36 --- /dev/null +++ b/Journalctl.md @@ -0,0 +1,189 @@ +# Journalctl + +Per molti anni i log sono stati gestiti da un'utilità chiamata syslogd. La maggior parte dei sistemi operativi basati su GNU/Linux è passata a systemd, +che usa **journalctl** per gestire i log di sistema. + +## Leggere i log + +Solo gli utenti che appartengono ai gruppi `adm` o `systemd-journal` possono leggere i log di sistema. + +Digitare il seguente comando: + +```bash +groups +``` + +Se non viene visualizzato "adm" oppure "systemd-journal" nell'output, aggiungere l'utente al gruppo col comando: + +```bash +sudo adduser $USER adm +``` +Sarà necessario riavviare la sessione affinché questa modifica abbia effetto. + +## Journald + +journald è un demone che raccoglie e scrive tutti i log del sistema nel file journal. + +Il suo file di configurazione predefinito si trova in: `/etc/systemd/journald.conf`. Eccone un esempio: + +```bash +# See journald.conf(5) for details. + +[Journal] +#Storage=auto +#Compress=yes +#Seal=yes +#SplitMode=uid +#SyncIntervalSec=5m +#RateLimitInterval=30s +#RateLimitBurst=1000 +#SystemMaxUse= +#SystemKeepFree= +#SystemMaxFileSize= +#SystemMaxFiles=100 +#RuntimeMaxUse= +#RuntimeKeepFree= +#RuntimeMaxFileSize= +#RuntimeMaxFiles=100 +#MaxRetentionSec= +#MaxFileSec=1month +#ForwardToSyslog=yes +#ForwardToKMsg=no +#ForwardToConsole=no +#ForwardToWall=yes +#TTYPath=/dev/console +#MaxLevelStore=debug +#MaxLevelSyslog=debug +#MaxLevelKMsg=notice +#MaxLevelConsole=info +#MaxLevelWall=emerg +``` + +Un certo numero di distribuzioni non consentono l'archiviazione permanente dei log sul disco per impostazione predefinita. + +È possibile abilitare questa opzione impostando "Storage" su "persistent " come mostrato di seguito. Questo creerà la directory `/var/log/journal` e tutti i file journal saranno memorizzati +al suo interno. + +```bash +sudo vim /etc/systemd/journald.conf + +[Journal] +Storage=persistent +``` +## Journalctl + +journalctl è l'utilità che permette di visualizzare il contenuto scritto dal servizio journald, all interno della directory `/var/log/journal`. + +- Per mostrare tutti i messaggi di log raccolti: + +```bash +journalctl +``` +- È possibile visualizzare un codice per ogni avvio, i relativi ID e i timestamp col comando: + +```bash +journalctl --list-boots +IDX BOOT ID FIRST ENTRY LAST ENTRY +-58 9899ae7a3234496caead003883e62736 Sun 2023-01-29 15:50:01 CET Sun 2023-01-29 16:29:44 CET +-57 3f9349712f9f4048a58323ceb5bee7a6 Sun 2023-01-29 16:31:45 CET Sun 2023-01-29 16:56:00 CET +-56 94b990994f0c4e9286f7a1882e1191e7 Sun 2023-01-29 16:57:49 CET Sun 2023-01-29 18:46:05 CET +-55 f3c06acc6f1c45fd8b0843c57c77ef0c Sun 2023-01-29 18:48:10 CET Sun 2023-01-29 19:13:58 CET +-54 118bfa08b2014bcf9b6768b74e2a1420 Sun 2023-01-29 19:15:25 CET Sun 2023-01-29 19:39:30 CET +-53 5a4ab4de4e0f4f4cb3e48c362a6f2114 Sun 2023-01-29 19:41:05 CET Sun 2023-01-29 20:43:06 CET +-52 8a2db867772a4fd980847f22ba414bfa Sun 2023-01-29 22:12:56 CET Sun 2023-01-29 23:19:13 CET +-51 46bcde99b8da4547b68737e768244c69 Mon 2023-01-30 20:48:18 CET Mon 2023-01-30 23:28:00 CET +-50 bec4f26fec024306bfc42ca6a0016da6 Tue 2023-01-31 21:40:48 CET Tue 2023-01-31 23:00:23 CET +-49 578137da3a374630819e9305b2891fad Thu 2023-02-02 20:36:17 CET Thu 2023-02-02 21:00:25 CET +-48 52e20d014d0b45a9b541da4ac98f2b39 Thu 2023-02-02 21:01:46 CET Thu 2023-02-02 22:01:58 CET +``` + +- Per visualizzare le voci dell'avvio corrente (numero 0), utilizzare l'opzione -b: + +```bash +journalctl -b +``` +e per vedere un diario precedente, usare l'IDX relativo con l'opzione -b: + +```bash +journalctl -b -1 +``` +In alternativa, utilizzare l'ID di avvio: + +```bash +journalctl -b 9fb590b48e1242f58c2579defdbbddc9 +``` + +- Per vedere tutte le voci da una data e un'ora particolari, ad es. 15 giugno 2017 alle 8:15, digitare questo comando: + +```bash +journalctl --since "2017-06-15 08:15:00" +journalctl --since today +journalctl --since yesterday +``` + +- Per visualizzare gli ultimi n messaggi (10 per impostazione predefinita), utilizzare il flag -n: + +```bash +journalctl -n +journalctl -n 20 +``` +- Per vedere solo i messaggi del kernel, simile all'output del comando dmesg, usare il flag -k: + +```bash +journalctl -k +journalctl -k -b +journalctl -k -b 9fb590b48e1242f58c2579defdbbddc9 +``` +- Per visualizzare tutte le voci di una determinata unità, utilizzare l'opzione -u come segue. + +```bash +journalctl -u apache2.service +``` + +- Per mostrare i log dal precedente avvio: + +```bash +journalctl -b -1 -u apache2.service +journalctl -u apache2.service --since today +``` + +- Per visualizzare i registri generati da un utente o gruppo particolare, specificare l'ID: + +```bash +journalctl _UID=1000 +journalctl _UID=1000 --since today +journalctl _UID=1000 -b -1 --since today +``` + +- Per mostrare tutti i log generati da un file eseguibile: + +```bash +journalctl /usr/bin/bash +``` + +- È inoltre possibile filtrare l'output in base alle priorità dei messaggi utilizzando il flag -p. + +I valori possibili sono: + emerg; alert; crit; err; warning; notice; info; debug + +```bash +journalctl -p err +``` + +- È possibile vedere i log mentre vengono scritti con l'opzione -f (simile alla funzionalità tail -f ): + +```bash +journalctl -f +``` + +- Per eliminare vecchi file journal (archiviati) eseguire i comandi seguenti: + +```bash +sudo journalctl --vacuum-size=50M #delete files until the disk space they use falls below the specified size +sudo journalctl --vacuum-time=1years #delete files so that all journal files contain no data older than the specified timespan +``` +## Collegamenti + +- [https://codepre.com/it/guia-para-principiantes-para-analizar-registros-en-linux-con-el-comando-journalctl.html](https://codepre.com/it/guia-para-principiantes-para-analizar-registros-en-linux-con-el-comando-journalctl.html) +- [https://it.linux-console.net/?p=632#gsc.tab=0](https://it.linux-console.net/?p=632#gsc.tab=0) +- [https://linuxhandbook.com/journalctl-command/](https://linuxhandbook.com/journalctl-command/)