3.3. Messaggi di sistema e file di registro

I sistemi Unix hanno una interfaccia di registrazione (log) standard e tutti i programmi possono utilizzarla liberamente. Oltre ad avere il vantaggio di essere unificati e facilmente analizzabili dai programmi di monitoraggio del registro, i messaggi di syslog offrono un modo molto conveniente per monitorare manualmente lo stato generale del sistema e imparare un sacco di cose riguardo il sistema in generale.

Esistono diverse implementazioni pratiche disponibili ma tutte sono comunemente conosciute come demoni syslog (demone = server). In sostanza, ciascun messaggio contiene l'informazione sul nome del servizio (categoria) e la priorità (importanza) (naturalmente insieme al testo del messaggio stesso). I servizi (categorie del messaggio) riconosciute sono auth, authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, syslog, user, uucp o local0 - local7, e le priorità sono debug, info, notice, warning, err, crit, alert o emerg.

I messaggi possono essere generati sia dal kernel che da programmi del computer o da utenti di sistema. Quando il messaggio raggiunge il demone syslog,

Il demone syslog predefinito di Debian è una variante del tradizionale syslogd BSD (Berkeley Software Distribution) e consiste dei pacchetti sysklogd e klogd (dei quali klogd è quello che resta in ascolto per i messaggi del kernel).

NotaUn appunto su BSD
 
 

"Ci sono due prodotti principali che provengono da Berkeley: LSD e Unix. Non crediamo che questa sia una coincidenza".

 
--Jeremy S. Anderson 

Si noti, tuttavia, che questo non è tecnicamente corretto; morons.org afferma che LSD non è un prodotto di Berkeley (è di Sandoz), e J.S.Anderson è un anonimo, ma la citazione è ancora largamente riportata e vale la pena ricordarla.

Così, seguendo uno schema dei nomi coerente, il file di configurazione di sysklogd risiede in /etc/syslog.conf. Se lo si apre, si riconosce una semplice struttura: selettori (coppie servizio.importanza) associate ad azioni (destinazioni per l'output). Per il resto dei dettagli del file di configurazione, si veda la pagina man syslog.conf(5).

Sia come esempio educativo che per il risultato pratico, andremo ad effettuare due semplici modifiche al file di configurazione di syslog:

Per realizzare il nostro primo obbiettivo, eseguire semplicemente echo "local2.* TAB /var/log/ppp.log" >> /etc/syslog.conf (nel quale si rimpiazzi "TAB" con il reale carattere Tab premendo Ctrl+v, Tab). Appena pppd inizia a registrare sul servizio local2, esso redireziona tutti i messaggi (di qualsiasi importanza) su un file separato.

Per la seconda parte, eseguire echo "*.* TAB /dev/tty12" >> /etc/syslog.conf. Quella regola duplicherà ogni messaggio sulla propria dodicesima console, /dev/tty12. Quella console dovrebbe essere vuota e non utilizzata da altro software, ma si noti che tecnicamente si può avere sia una valida console di login che i messaggi di syslog sul medesimo terminale; prima o poi l'output semplicemente risulterà in disordine. Per ripulirlo, si potrebbe usare la combinazione di tasti standard di "pulizia schermo", Ctrl+l.

Ora, siccome i cambiamenti ai file di configurazione generalmente non sono mai rilevati automaticamente dai programmi che li utilizzano dobbiamo noi dire al demone syslog di ricaricare la sua configurazione. Utilizzeremo l'interfaccia standard /etc/init.d/ della quale abbiamo già parlato. Semplicemente dare il comando sudo /etc/init.d/sysklogd reload o sudo /etc/init.d/sysklogd restart, per fare in modo che le modifiche abbiano effetto.

Anche osservando i registri di un sistema apparentemente in idle (inattivo), si vedrà che ci sono in realtà dei "lavori" periodici avviati dal demone cron (schedulatore del sistema). Oltre a ciò, si provi ad avviare qualsiasi comando privilegiato (qualcosa come un semplice sudo ls) e si passi sulla propria dodicesima console per vedere come venga registrato.

Se si vuole inviare i propri messaggi a syslog, utilizzare il programma logger (fa parte del pacchetto bsdutils). Provare ad eseguire logger -i -p user.info -- Questo è un messaggio di prova.

Se si sta pianificando di utilizzare l'interfaccia grafica X, spostarsi sulla dodicesima console potrebbe non essere il modo più conveniente per monitorare i messaggi di sistema; il proprio monitor o un display LCD necessita di adattarsi alla nuova frequenza di pixel ogni volta che si cambia console; impiega un secondo o due per farlo ed inizia a diventare noioso dopo l'iniziale divertimento. È possibile risolvere la cosa rendendo le frequenze coincidenti, ma questo esula dallo scopo di questa Guida. La nostra soluzione al problema consisterà nell'avviare invece applicazioni del tipo di root-tail, che controllano i file di log e stampano i messaggi nella propria finestra root (lo sfondo di X).

Per concludere la sezione, possiamo solo ricordare che tutti i file di registro sono abitualmente posizionati nella directory /var/log e che tutti i messaggi che si sono visti comparire sulla propria dodicesima console sono stati anche salvati in uno (o anche più) di quei file. Si possono immaginare le finalità di ciascun file di registro guardando /etc/syslog.conf.

Particolarmente interessante è il file /var/log/dmesg, che mantiene una copia dei messaggi che scorrono all'avvio del sistema. Si può anche utilizzare il comando dmesg, ma invece dei messaggi di avvio, mostrerà gli ultimi pochi kilobyte di messaggi del kernel (che potrebbero o meno essere gli stessi contenuti in /var/log/dmesg, a seconda dell'attività che il sistema ha visto nel frattempo).

A dire il vero, i sistemi più nuovi supportano anche il demone bootlog che si prende la cura di salvare i messaggi all'avvio. Se bootlog è abilitato nel file /etc/default/bootlogd, una completa registrazione dell'avvio sarà salvata in /var/log/boot.