table of contents
| syslog(2) | System Calls Manual | syslog(2) |
NAVN¶
syslog, klogctl - læs og/eller ryd kernebeskedens ring-buffer; angiv console_loglevel
BIBLIOTEK¶
C-standardbibliotek (libc, -lc)
SYNOPSIS¶
#include <sys/syscall.h> /* Definition af SYS_*-konstanter */ #include <unistd.h>
int syscall(SYS_syslog, int type, char *bufp, int size);
/* Glibc-grænsefladen */ #include <sys/klog.h>
int klogctl(int type, char *bufp, int size);
BESKRIVELSE¶
Bemærk: Du er sandsynligvis på udkig efter C-biblioteksfunktionen syslog(), der kommunikerer med syslogd(8); se syslog(3) for detaljer.
Denne side beskriver systemkaldet syslog() for kernen, der bruges til at kontrollere kernens printk()-buffer; glibc-omslagsfunktionen for systemkaldet kaldes klogctl().
Kernens log-buffer¶
Kernen har en cyklisk buffer med størrelsen LOG_BUF_LEN hvori beskeder anført som argumenter til kernefunktionen printk() er lagret (uanset deres logniveau). I tidligere kerner havde LOG_BUF_LEN værdien 4096; fra Linux 1.3.54 var det 8192; fra Linux 2.1.113 var det 16384; siden Linux 2.4.23/2.6 er værdien en kernekonfigurationsindstilling (CONFIG_LOG_BUF_SHIFT, standardværdien er afhængig af arkitekturen). Siden Linux 2.6.6 kan størrelsen forespørges med kommandotypen 10 (se nedenfor).
Kommandoer¶
Argumentet type bestemmer handlingen udført af denne funktion. Listen nedenfor angiver værdierne for type. De symbolske navne er defineret i kernekilden, men eksporteres ikke til brugerrum; du vil enten skulle bruge tallene, eller definere navnene selv.
- SYSLOG_ACTION_CLOSE (0)
- Luk loggen. I øjeblikket en NOP.
- SYSLOG_ACTION_OPEN (1)
- Åbn loggen. I øjeblikket en NOP.
- SYSLOG_ACTION_READ (2)
- Læs fra loggen. Kaldet venter indtil kernelogbufferen ikke er tom, og læser så mindst len byte ind i bufferen peget på af bufp. Kaldet returnerer antallet af byte læst. Byte læst fra loggen forsvinder fra logbufferen: informationen kan kun læses en gang. Dette er funktionen afviklet af kernen når et brugerprogram læser /proc/kmsg.
- SYSLOG_ACTION_READ_ALL (3)
- Læs alle beskeder tilbage i ringbufferen, placer dem i bufferen peget mod af bufp. Kaldet læser de sidste len byte fra logbufferen (ikkedestruktivt), men vil ikke læse mere end var skrevet ind i bufferen siden den sidste »clear ring buffer«-kommanod (se kommando 5 nedenfor)). Kaldet returnerer antallet af byte læst.
- SYSLOG_ACTION_READ_CLEAR (4)
- Læs og ryd alle beskeder tilbage i ringbufferen. Kaldet gør præcis det samme som for en type af 3, men afvikler også »clear ring buffer«-kommandoen.
- SYSLOG_ACTION_CLEAR (5)
- Kaldet afvikler kun »clear ring buffer«-kommanoden. Argumenterne bufp og size ignoreres.
- Denne kommando rydder reelt ikke ringbufferen. I stedet for angives en kernebookkeeping-variabel, der bestemmer resultaterne returneret af kommandoerne 3 (SYSLOG_ACTION_READ_ALL) og 4 (SYSLOG_ACTION_READ_CLEAR). Denne kommando har ingen effekt på kommandoerne 2 (SYSLOG_ACTION_READ) og 9 (SYSLOG_ACTION_SIZE_UNREAD).
- SYSLOG_ACTION_CONSOLE_OFF (6)
- Kommandoen gemmer den nuværende værdi af console_loglevel og angiver så console_loglevel til minimum_console_loglevel, så at ingen beskeder udskrives til konsollen. Før Linux 2.6.32, angiver kommandoen bare console_loglevel til minimum_console_loglevel. Se diskussionen for /proc/sys/kernel/printk, nedenfor.
- Argumenterne bufp og size ignoreres.
- SYSLOG_ACTION_CONSOLE_ON (7)
- Hvis en tidligere SYSLOG_ACTION_CONSOLE_OFF-kommando er blevet udført, så gendanner denne kommando console_loglevel til værdien, der blev gemt af den kommando. Før Linux 2.6.32 angav denne kommando bare console_loglevel til default_console_loglevel. Se diskussionen for /proc/sys/kernel/printk, nedenfor.
- Argumenterne bufp og size ignoreres.
- SYSLOG_ACTION_CONSOLE_LEVEL (8)
- Kaldet angiver console_loglevel til værdien angivet i size, der skal være et heltal mellem 1 og 8 (inklusive). Kernen tvinger stille en minimumsværdi på minimum_console_loglevel for size. Se log level-afsnittet for detaljer. Argumnetet bufp ignoreres.
- SYSLOG_ACTION_SIZE_UNREAD (9) (siden Linux 2.4.10)
- Kaldet returnerer antallet af byte tilgængelig i øjeblikket til at blive læst fra kernelogbufferen via kommando 2 (SYSLOG_ACTION_READ). Argumenterne bufp og size ignoreres.
- SYSLOG_ACTION_SIZE_BUFFER (10) (siden Linux 2.6.6)
- Denne kommando returnerer den samlede størrelse for kernelogbufferen. Argumenterne bufp og size ignoreres.
Alle kommandoer undtagen 3 og 10 kræver privilegium. I Linuxkerner før Linux 2.6.37 er kommandotyperne 3 og 10 tilladt for uprivilegerede processer; siden Linux 2.6.37 har disse kommandoer kun adgang til uprivilegerede processer hvis /proc/sys/kernel/dmesg_restrict har værdien 0. Før Linux 2.6.37 betød »privilegeret« at kalderen har funktionaliteten CAP_SYS_ADMIN. Siden Linux 2.6.37 betyder »privilegeret« at kalderen har enten funktionaliteten CAP_SYS_ADMIN (nu forældet til dette formål) eller den (nye) funktionalitet CAP_SYSLOG.
/proc/sys/kernel/printk¶
/proc/sys/kernel/printk er en skrivbar fil indeholdende fire heltalsværdier der influerer kernens printk()-opførsel når fejlbeskeder udskrives eller logges. De fire værdier er:
- console_loglevel
- Kun beskeder med et logniveau lavere end denne værdi vil blive udskrevet til konsollen. Standardværdien for dette felt er DEFAULT_CONSOLE_LOGLEVEL (7), men er angivet til 4 hvis kernekommandolinjen indeholder ordet »quiet«, 10 hvi kernekommandolinjen indeholder ordet »debug« og til 15 i tilfælde af en kernefejl (10 og 15 er bare dumme, og svarer til 8). Værdien console_loglevel kan angives (til en værdi i intervallet 1–8) af et syslog()-kald med en type på 8.
- default_message_loglevel
- Denne værdi vil blive brugt som logniveau for printk()-beskeder, der ikke har et eksplicit niveau. Op til og inklusive Linux 2.6.38 var den kodede standardværdi for dette felt 4 (KERN_WARNING); siden Linux 2.6.39 er standardværdien defineret af kernekonfigurationstilvalget CONFIG_DEFAULT_MESSAGE_LOGLEVEL, hvis standard er 4.
- minimum_console_loglevel
- Værdien i dette felt er den mindste værdi som console_loglevel kan have.
- default_console_loglevel
- Dette er standardværdien for console_loglevel.
Logniveauet¶
Hver printk()-besked har sit eget logniveau. Hvis logniveauet ikke er eksplict angivet som en del af beskeden, så er standarden default_message_loglevel. Den konventionelle betydning af logniveauet er som følger:
| Kernekonstant | Niveauværdi | Betydning |
| KERN_EMERG | 0 | Systemet kan ikke bruges |
| KERN_ALERT | 1 | Handling skal udføres øjeblikkeligt |
| KERN_CRIT | 2 | Kritiske betingelser |
| KERN_ERR | 3 | Fejlbetingelser |
| KERN_WARNING | 4 | Advarselsbetingelser |
| KERN_NOTICE | 5 | Normal men signifikant betingelse |
| KERN_INFO | 6 | Informativ |
| KERN_DEBUG | 7 | Fejlsøgnings-niveaubeskeder |
Kernens printk()-rutine vil kun udskrive en besked på konsollen hvis denne har et logniveau mindre end værdien af console_loglevel.
RETURVÆRDI¶
For type svarende til 2, 3 eller 4 returnerer et succesfuld kald til syslog() antallet af læste byte. For type 9, returnerer syslog() antallet af byte tilgængelig i øjeblikket for læsning af kernens logbuffer. For type 10 returnerer syslog() den samlede størrelse for kernens logbuffer. For andre værdier af type returneres 0 ved succes.
I tilfælde af fejl returneres -1 og errno angives for at indikere fejlen.
FEJL¶
- EINVAL
- Ugyldige argumenter (f.eks. ugyldig type; eller for type 2, 3 eller 4, er buf NULL eller size er mindre end nul; eller for type 8, er level uden for intervallet 1 til 8).
- ENOSYS
- Dette syslog()-systemkald er ikke tilgængelig, da kernen blev kompileret med kernekonfigurationstilvalget CONFIG_PRINTK deaktiveret.
- EPERM
- Et forsøg blev gjort på at ændre console_loglevel eller rydde kernens beskedringbuffer af en proces uden tilstrækkelig privilegium (mere præcist: uden funktionaliteten CAP_SYS_ADMIN eller CAP_SYSLOG).
- ERESTARTSYS
- Systemkald blev afbrudt af et signal; intet blev læst. (Dette kan kun ses under en sporing).
STANDARDER¶
Linux.
HISTORIK¶
Fra begyndelsen bemærkede for at det var uheldigt at et systemkald og en biblioteksrutine med det samme navn er helt forskellige ting.
SE OGSŶ
OVERSÆTTELSE¶
Oversættere af denne manual til dansk Joe Hansen <joedalton2@yahoo.dk>
Denne oversættelse er gratis dokumentation; læs GNU General Public License version 3 eller nyere for ophavsretbetingelser. Der er INGEN ANSVAR.
Hvis du støder på fejl i oversættelsen af denne vejledning, skal du sende en besked til debian-l10n-danish@lists.debian.org.
| 8. februar 2026 | Linux man-pages 6.17 |