NOM¶
syslog, klogctl - Lire et/ou effacer les tampons circulaires de messages du
noyau
SYNOPSIS¶
int syslog(int type, char *bufp, int len);
/* Pas de fonction fournie par glibc */
/* L'interface glibc */
#include <sys/klog.h>
int klogctl(int type, char *bufp, int len);
DESCRIPTION¶
Si vous avez besoin de la fonction
syslog() de la bibliothèque C
(qui communique avec
syslogd(8)), consultez
syslog(3). L'appel
système portant ce nom contrôle le tampon
printk() du
noyau, et la fonction d'encapsulation de glibc s'appelle
klogctl().
Le tampon de journalisation du noyau.¶
Le noyau dispose d'un tampon circulaire d'une longueur
LOG_BUF_LEN dans
lequel il stocke les messages fournis en paramètre à la fonction
du noyau
printk() (sans tenir compte du niveau de journalisation). Dans
les premiers noyaux,
LOG_BUF_LEN avait pour valeur 4096 ;
à partir du noyau 1.3.54 elle valait 8192 ; à partir du
noyau 2.1.113 elle valait 16384 ; depuis 2.4.23/2.6 la valeur est une
option de configuration du noyau (
CONFIG_LOG_BUF_SHIFT). Dans les
noyaux récents, la commande de type 10 (voir plus bas) renvoie la
taille du tampon.
Commandes¶
L'argument
type détermine quelle action est réalisée
par cette fonction. La liste ci-dessous précise les valeurs que peut
prendre
type. Les noms symboliques sont définis dans les sources
du noyau, mais ne sont pas exportés dans l'environnement
utilisateur ; vous devrez donc utiliser les identifiants
numériques, ou redéfinir vous même les noms.
- SYSLOG_ACTION_CLOSE (0)
- Ferme le journal. Actuellement, cette instruction est sans effet.
- SYSLOG_ACTION_OPEN (1)
- Ouvre le journal. Actuellement, cette instruction est sans effet.
- SYSLOG_ACTION_READ (2)
- Lecture du journal. Dès que le tampon du journal n'est plus vide,
l'appel lit au plus len octets qu'il place dans le tampon vers
lequel pointe buf. Il renvoie le nombre d'octets lus. Les octets
lus sont supprimés du journal : les informations ne peuvent
être lues qu'une seule fois. C'est la fonction
exécutée par le noyau quand un programme utilisateur lit
/proc/kmsg.
- SYSLOG_ACTION_READ_ALL (3)
- Lecture de tous les messages restant dans le tampon circulaire, qui sont
déplacés dans le tampon vers lequel pointe bufp.
L'appel lit les len derniers octets dans le journal (de
manière non destructive). Il ne lira pas plus que ce qui a
été écrit dans le tampon depuis la dernière
exécution de la commande de nettoyage (commande
« clear ring buffer », voir plus bas commande
5). L'appel renvoie le nombre d'octets lus.
- SYSLOG_ACTION_READ_CLEAR (4)
- Lecture et suppression de tous les messages du tampon circulaire. L'appel
effectue exactement la même chose que la commande de type 3,
mais exécute également la commande « clear
ring buffer ».
- SYSLOG_ACTION_CLEAR (5)
- L'appel ne fait qu'exécuter la commande « clear ring
buffer ». Les arguments bufp and len ne sont
pas pris en compte.
- Cette fonction ne vide pas réellement le tampon circulaire. Plus
exactement, elle définit une variable de suivi d'activité du
noyau qui détermine ce que renvoient les commandes 3 (
SYSLOG_ACTION_READ_ALL) et 4 ( SYSLOG_ACTION_READ_CLEAR).
Cette commande est sans effet sur les commandes 2 (
SYSLOG_ACTION_READ) et 9 ( SYSLOG_ACTION_SIZE_UNREAD).
- SYSLOG_ACTION_CONSOLE_OFF (6)
- Désactive l'affichage à la console (routine printk).L'appel
positionne le niveau de journalisation de la console au minimum, de telle
sorte qu'aucun message ne soit affiché sur la console. Les
arguments bufp et len ne sont pas pris en compte.
- SYSLOG_ACTION_CONSOLE_ON (7)
- L'appel positionne le niveau de journalisation de la console à sa
valeur par défaut, de telle sorte que des messages soient
affichés sur la console. Les arguments bufp et len ne
sont pas pris en compte.
- SYSLOG_ACTION_CONSOLE_LEVEL (8)
- L'appel positionne le niveau de journalisation de la console à
level, qui doit être un entier compris entre 1 et 8
(inclus). Consultez la section Le niveau de journalisation
(loglevel) pour plus de détails. Les arguments bufp et
len ne sont pas pris en compte.
- SYSLOG_ACTION_SIZE_UNREAD (9) (à partir de Linux
2.4.10)
- L'appel renvoie le nombre d'octets disponibles en lecture dans le tampon
de journalisation du noyau au moment de l'appel, au moyen de la commande 2
( SYSLOG_ACTION_READ). Les arguments bufp et len ne
sont pas pris en compte.
- SYSLOG_ACTION_SIZE_BUFFER (10) (à partir de Linux
2.6.6)
- Cette commande renvoie la taille totale du tampon du journal du noyau. Les
arguments bufp et len ne sont pas pris en compte.
Toutes les commandes, excepté 3 et 10, nécessitent des
privilèges. Dans les noyaux Linux précédant la
version 2.6.37, seules les commandes de type 3 à 10
étaient permises aux processus non privilégiés ; depuis
Linux 2.6.37, les commandes de type 3 et 10 sont permises à ces
processus seulement si
/proc/sys/kernel/dmesg_restrict vaut 0. Avant
Linux 2.6.37, « privilégié »
signifiait que le processus avait soit la capacité
CAP_SYS_ADMIN
(maintenant obsolète pour cet usage), soit la (nouvelle)
capacité
CAP_SYSLOG.
Le niveau de journalisation (loglevel)¶
La routine du noyau
printk() n'affichera sur la console que les messages
ayant un niveau de journalisation inférieur à la valeur de la
variable
console_loglevel. Initialement, la valeur de cette variable
est
DEFAULT_CONSOLE_LOGLEVEL (7), mais elle est augmentée
à 10 si la ligne de commande du noyau contient le mot
« debug », et à 15 si une faute du noyau se
produit (en réalité, les valeurs 10 et 15 sont idiotes et
n'apportent rien de plus que 8). Cette variable est positionnée (dans
l'intervalle 1–8) par un appel
syslog() de
type 8. Les
appels à
syslog() dont le
type est égal à 6
ou à 7 positionnent respectivement la variable à 1 (seulement en
cas de panique du noyau) ou à 7 (tout message autre qu'un message de
debug).
Chaque ligne de texte dans un message a son propre niveau de journalisation. Ce
niveau est
DEFAULT_MESSAGE_LOGLEVEL - 1 (6) à moins que la ligne
ne commence par <d> où
d est un chiffre dans l'intervalle
1–7. La signification conventionnelle des niveaux de journalisation est
définie dans
<linux/kernel.h> comme suit :
#define KERN_EMERG "<0>" /* système inutilisable */
#define KERN_ALERT "<1>" /* action à effectuer immédiatement */
#define KERN_CRIT "<2>" /* conditions critiques */
#define KERN_ERR "<3>" /* conditions d'erreurs */
#define KERN_WARNING "<4>" /* message d'avertissement */
#define KERN_NOTICE "<5>" /* normal mais significatif */
#define KERN_INFO "<6>" /* informations */
#define KERN_DEBUG "<7>" /* messages de débugging */
VALEUR RENVOYÉE¶
Quand
type est égal à 2, 3 ou 4, un appel réussi
à
syslog() renvoie le nombre d'octets lus. Pour le
type
9,
syslog() renvoie le nombre d'octets disponibles actuellement en
lecture dans le tampon de journalisation du noyau. Pour le
type 10,
syslog() renvoie la taille totale du tampon de journalisation du noyau.
Pour les autres valeurs de
type, 0 est renvoyé en cas de
succès.
En cas d'erreur, -1 est renvoyé et
errno contient le code
d'erreur.
ERREURS¶
- EINVAL
- Mauvais paramètres (par exemple, mauvais type ; ou
type égal à 2, 3 ou 4 et buf est NULL, ou
len est inférieur à 0 ; ou pour type
égal à 8, le niveau level est en dehors de
l'intervalle allant de 1 à 8).
- ENOSYS
- L'appel système syslog() n'est pas disponible car le noyau a
été compilé sans que l'option CONFIG_PRINTK de
configuration du noyau n'ait été activée.
- EPERM
- Un changement de console_loglevel ou un effacement du tampon circulaire du
noyau par un processus sans les privilèges suffisants (plus
précisément sans la capacité CAP_SYS_ADMIN ou
CAP_SYSLOG) a été tenté.
- ERESTARTSYS
- L'appel système a été interrompu par un signal, et
rien n'a été lu. (Ceci ne peut être vu que pendant un
suivi de processus).
Cet appel système est spécifique à Linux et ne devrait pas
être employé dans des programmes destinés à
être portables.
NOTES¶
Depuis longtemps, des gens trouvent regrettable qu'un appel système et
une routine de bibliothèque aient le même nom bien qu'ils
n'aient pas de rapport entre eux.
VOIR AUSSI¶
syslog(3),
capabilities(7)
COLOPHON¶
Cette page fait partie de la publication 3.65 du projet
man-pages Linux.
Une description du projet et des instructions pour signaler des anomalies
peuvent être trouvées à l'adresse
http://www.kernel.org/doc/man-pages/.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Christophe Blaess <
http://www.blaess.fr/christophe/> (1996-2003), Alain
Portal <
http://manpagesfr.free.fr/> (2003-2006). Julien Cristau et
l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet
manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce
document en utilisant la commande «
man -L C
<section>
<page_de_man> ».