X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=session.tex;h=a13f618c85ed3c35d4f6efe9ea646ce4a91dfb30;hb=39fd82d59f0b0ec9b67a07e9aced7148b1b8a8a9;hp=766b87930e0ebb36380281abe23604222ff90967;hpb=193d612d40c5f81f5559ea6e11e70f6b6e51fb39;p=gapil.git diff --git a/session.tex b/session.tex index 766b879..a13f618 100644 --- a/session.tex +++ b/session.tex @@ -589,7 +589,7 @@ ripetere da capo tutto il procedimento. -\subsection{Prescrizioni per un programma \textit{daemon}} +\subsection{Le prescrizioni per un \textsl{demone} ed il \textit{syslog}} \label{sec:sess_daemon} Come sottolineato fin da sez.~\ref{sec:intro_base_concept}, in un sistema @@ -682,37 +682,40 @@ le sue modalità di interazione col sistema e gli utenti a seconda dei compiti e delle funzionalità che sono previste; ma gli errori devono normalmente essere notificati all'amministratore del sistema. +\itindbeg{syslog} + Una soluzione può essere quella di scrivere gli eventuali messaggi su uno specifico file (cosa che a volte viene fatta comunque) ma questo comporta il grande svantaggio che l'amministratore dovrà tenere sotto controllo un file diverso per ciascun demone, e che possono anche generarsi conflitti di nomi. Per questo in BSD4.2 venne introdotto un servizio di sistema, il -\textit{syslog}, che oggi si trova su tutti i sistemi Unix, e che permettesse -ai demoni di inviare messaggi all'amministratore in una maniera -standardizzata. +\textit{syslog}, che oggi si trova su tutti i sistemi Unix, e che permette ai +demoni di inviare messaggi all'amministratore in una maniera +standardizzata. Il servizio prevede vari meccanismi di notifica, e, come ogni altro servizio -in un sistema unix-like, viene gestito attraverso un apposito programma, -\cmd{syslogd}, che è anch'esso un \textsl{demone}. In generale i messaggi di -errore vengono raccolti dal file speciale \file{/dev/log}, un socket locale -(vedi sez.~\ref{sec:sock_sa_local}) dedicato a questo scopo, o via rete, con -un socket UDP, o da un apposito demone, \cmd{klogd}, che estrae i messaggi del -kernel.\footnote{i messaggi del kernel sono tenuti in un buffer circolare e - scritti tramite la funzione \func{printk}, analoga alla \func{printf} usata - in user space; una trattazione eccellente dell'argomento si trova in - \cite{LinDevDri}, nel quarto capitolo.} - -Il servizio permette poi di trattare i vari messaggi classificandoli -attraverso due indici; il primo, chiamato \textit{facility}, suddivide in -diverse categorie i vari demoni in modo di raggruppare i messaggi provenienti -da operazioni che hanno attinenza fra loro, ed è organizzato in sottosistemi -(kernel, posta elettronica, demoni di stampa, ecc.). Il secondo, chiamato -\textit{priority}, identifica l'importanza dei vari messaggi, e permette di -classificarli e differenziare le modalità di notifica degli stessi. - -Il sistema di \textit{syslog} attraverso \cmd{syslogd} provvede poi a -riportare i messaggi all'amministratore attraverso una serie differenti -meccanismi come: +in un sistema unix-like, viene gestito attraverso un apposito programma, che è +anch'esso un \textsl{demone}. In generale i messaggi di errore vengono +raccolti dal file speciale \file{/dev/log}, un socket locale (vedi +sez.~\ref{sec:sock_sa_local}) dedicato a questo scopo, o via rete, con un +socket UDP e trattati dal demone che gestisce il servizio. Il più comune di +questi è \texttt{syslogd}, che consente un semplice smistamento dei messaggi +sui file in base alle informazioni in esse presenti.\footnote{ad oggi però + \texttt{syslogd} è in sostanziale disuso, sostituito da programmi più + sofisticati come \texttt{rsyslog} o \texttt{syslog-ng}.} + +Il servizio del \textit{syslog} permette infatti di trattare i vari messaggi +classificandoli attraverso due indici; il primo, chiamato \textit{facility}, +suddivide in diverse categorie i messaggi in modo di raggruppare quelli +provenienti da operazioni che hanno attinenza fra loro, ed è organizzato in +sottosistemi (kernel, posta elettronica, demoni di stampa, ecc.). Il secondo, +chiamato \textit{priority}, identifica l'importanza dei vari messaggi, e +permette di classificarli e differenziare le modalità di notifica degli +stessi. + +Il sistema del \textit{syslog} attraverso il proprio demone di gestione +provvede poi a riportare i messaggi all'amministratore attraverso una serie +differenti meccanismi come: \begin{itemize*} \item scrivere sulla console. \item inviare via mail ad uno specifico utente. @@ -720,10 +723,10 @@ meccanismi come: \item inviare ad un altro demone (anche via rete). \item scartare. \end{itemize*} -secondo le modalità che questo preferisce e che possono essere impostate -attraverso il file di configurazione \conffile{/etc/syslog.conf} (maggiori -dettagli si possono trovare sulle pagine di manuale per questo file e per -\cmd{syslogd}). +le modalità dipendono ovviamente dal demone di gestione che si usa, per la +gestione del quale si rimanda ad un testo di amministrazione di +sistema.\footnote{l'argomento è ad esempio coperto dal capitolo 3.2.3 si + \cite{AGL}.} Le \acr{glibc} definiscono una serie di funzioni standard con cui un processo può accedere in maniera generica al servizio di \textit{syslog}, che però @@ -738,7 +741,7 @@ gli effetti delle chiamate successive; il suo prototipo è: \begin{prototype}{syslog.h}{void openlog(const char *ident, int option, int facility)} -Apre una connessione al sistema di \textit{syslog}. +Apre una connessione al sistema del \textit{syslog}. \bodydesc{La funzione non restituisce nulla.} \end{prototype} @@ -773,18 +776,20 @@ specificato con un OR aritmetico. \const{LOG\_CRON} & Messaggi dei demoni di gestione dei comandi programmati (\cmd{cron} e \cmd{at}).\\ \const{LOG\_DAEMON} & Demoni di sistema.\\ - \const{LOG\_FTP} & Server FTP.\\ + \const{LOG\_FTP} & Servizio FTP.\\ \const{LOG\_KERN} & Messaggi del kernel.\\ \const{LOG\_LOCAL0} & Riservato all'amministratore per uso locale.\\ - --- & \\ + \hspace{.5cm}--- & \hspace{3cm} ...\\ \const{LOG\_LOCAL7} & Riservato all'amministratore per uso locale.\\ \const{LOG\_LPR} & Messaggi del sistema di gestione delle stampanti.\\ \const{LOG\_MAIL} & Messaggi del sistema di posta elettronica.\\ \const{LOG\_NEWS} & Messaggi del sistema di gestione delle news (USENET).\\ - \const{LOG\_SYSLOG} & Messaggi generati dallo stesso \cmd{syslogd}.\\ + \const{LOG\_SYSLOG} & Messaggi generati dal demone di gestione del + \textit{syslog}.\\ \const{LOG\_USER} & Messaggi generici a livello utente.\\ - \const{LOG\_UUCP} & Messaggi del sistema UUCP.\\ + \const{LOG\_UUCP} & Messaggi del sistema UUCP (\textit{Unix to Unix + CoPy}, ormai in disuso).\\ \hline \end{tabular} \caption{Valori possibili per l'argomento \param{facility} di \func{openlog}.} @@ -805,12 +810,16 @@ tab.~\ref{tab:sess_openlog_option}. \textbf{Valore}& \textbf{Significato}\\ \hline \hline -\const{LOG\_CONS} & Scrive sulla console quando. \\ -\const{LOG\_NDELAY} & Sostituisce \const{LOG\_AUTH}.\\ -\const{LOG\_NOWAIT} & Messaggi dei demoni di gestione dei comandi - programmati (\cmd{cron} e \cmd{at}).\\ -\const{LOG\_ODELAY} & \\ -\const{LOG\_PERROR} & Stampa anche su \file{stderr}.\\ +\const{LOG\_CONS} & Scrive sulla console in caso di errore nell'invio del + messaggio al sistema del \textit{syslog}. \\ +\const{LOG\_NDELAY} & Apre la connessione al sistema del \textit{syslog} + subito invece di attendere l'invio del primo messaggio.\\ +\const{LOG\_NOWAIT} & Non usato su Linux, su altre piattaforme non attende i + processi figli creati per inviare il messaggio.\\ +\const{LOG\_ODELAY} & Attende il primo messaggio per aprire la connessione al + sistema del \textit{syslog}.\\ +\const{LOG\_PERROR} & Stampa anche su \file{stderr} (non previsto in + POSIX.1-2001).\\ \const{LOG\_PID} & Inserisce nei messaggi il \acr{pid} del processo chiamante.\\ \hline @@ -895,6 +904,19 @@ tab.~\ref{tab:sess_syslog_priority}. É inoltre disponibile anche la macro \macro{LOG\_UPTO(p)} che permette di specificare automaticamente tutte le priorità fino ad un certo valore. +\itindend{syslog} + + +Oltre ai vari demoni, il servizio viene utilizzato anche dal kernel per +comunicare messaggi in user space, in questo caso + + + o da un apposito demone, \cmd{klogd}, che estrae i messaggi del +kernel.\footnote{i messaggi del kernel sono tenuti in un buffer circolare e + scritti tramite la funzione \func{printk}, analoga alla \func{printf} usata + in user space; una trattazione eccellente dell'argomento si trova in + \cite{LinDevDri}, nel quarto capitolo.} + \section{L'I/O su terminale}