Objective
syftet med denna handledning är att lära sig om de olika linux kernel log levels, hur de är organiserade och hur vi kan ställa in vilka meddelanden som ska visas på konsolen beroende på deras svårighetsgrad.
krav
- Root-privilegier för att redigera konfigurationsfiler
svårighet
lätt
introduktion
hanteringen av Linux-kärnloggfiler är en viktig aspekt av en maskinadministration: loggar kan helt enkelt informera oss om tillståndet för demonen, eller visa kritiska meddelanden eller varningar., I denna handledning kommer vi att se den olika typen av loggnivå som används av linux-kärnan, hur de organiseras av svårighetsgrad och hur vi kan filtrera meddelanden som visas på konsolen beroende på den.
linuxkärnans loggnivåer
det finns i princip åtta loggnivåer som ett meddelande som skickas av Linuxkärnan kan anta, frånlevel 0
och minskar i svårighetsgrad ’tilllevel 7
: den lägsta lognivåidentifieraren, det mest kritiska sammanhanget.,
när en loggnivå är inställd som standard för konsolen, antingen envist eller tillfälligt, fungerar den som ett filter, så att endast meddelanden med en loggnivå som är lägre än den visas (därför visas meddelanden med högre svårighetsgrad). Låt oss kortfattat se hur loggnivåer organiseras: den första loggnivån är0
, identifierad avKERN_EMERG
strängen. Detta är den högsta nivån i svårighetsgrad: det antas av meddelanden om systemets instabilitet eller överhängande kraschar.,
Loglevel1
, ellerKERN_ALERT
det är vad som kommer omedelbart efter. Denna nivå används i situationer där användarens uppmärksamhet omedelbart krävs.
Nästa loggnivå i svårighetsgrad ärKERN_CRIT
, eller loglevel2
. Denna svårighetsgrad används för att informera om kritiska fel, både hårdvara eller mjukvara relaterade.
Loglevel3
, identifieras också avKERN_ERR
strängen, det är nästa i skalan., Meddelanden som antar denna nivå används ofta för att meddela användaren om icke-kritiska fel, som till exempel ett misslyckat eller problematiskt enhetsigenkänning, eller mer allmänt drivrutinsrelaterade problem.
prenumerera på RSS och nyhetsbrev och få senaste Linux nyheter, jobb, karriärråd och handledning.,
KERN_WARNING
, eller loglevel4
det är loggnivån som vanligtvis används som standard i majoriteten av linux-distributioner. Den här nivån används för att visa varningar eller meddelanden om icke överhängande fel.
Loglevel5
det ärKERN_NOTICE
. Meddelanden som använder denna svårighetsgrad handlar om händelser som kan vara värt att notera.,
Loglevel
6
det ärKERN_INFO
: det här är loggnivån som används för informationsmeddelanden om åtgärden som utförs av kärnan.
Slutligen har viKERN_DEBUG
, eller loglevel7
, som huvudsakligen används för felsökning.
så här kontrollerar du den nuvarande standardloggnivån
kontrollera standardloggnivån som används på vårt system det är väldigt enkelt. Allt vi behöver göra är att undersöka innehållet i filen/proc/sys/kernel/printk
., För er som inte vet,/proc
det är envirtual filesystem
: filerna som finns i den är inte faktiskt på disken,men är en visuell representation av systemtillståndet som skapats av kärnan ochupprätthålls i minnet. I det här fallet kan vi till exempel använda filen mentionedabove för att fråga information om standardkonsolloggnivån i oursystem. Allt vi behöver göra är att köra:
$ cat /proc/sys/kernel/printk
detta är den typiska produktionen av kommandot:
4 4 1 7
det första värdet i vår utgång är den nuvarandeconsole_loglevel
., Det här är den information vi letade efter: värdet,4
I det här fallet representerar loggnivån som för närvarande används. Som sagt innan detta innebär att endast meddelanden som antar en allvarlighetsgrad högre än den, kommer att visas på konsolen.
det andra värdet i utdata representerardefault_message_loglevel
. Detta värde används automatiskt för meddelanden utan en specifik loggnivå: om ett meddelande inte är associerat med en loggnivå, kommer den här att användas för den.
det tredje värdet i utmatningsrapporternaminimum_console_loglevel
status., Den anger minsta loglevel som kan användas förconsole_loglevel
. Nivån här använde den är1
, den högsta.
slutligen representerar det sista värdetdefault_console_loglevel
, vilket är standardloggnivån som används förconsole_loglevel
vid uppstartstiden.,
för fullständighetens skull måste vi säga att samma information också kan hämtas genom att använda kommandotsysctl
, som kör:
$ sysctl kernel.printk
ändra standardkonsolloggnivån
vi såg bara hur man hämtar information om den aktuella loglevel som används för konsolen. I vissa situationer kanske vi vill ändra det värdet: låt oss se hur vi kan utföra denna uppgift.
Den enklaste metoden vi kan använda är att skriva det nya värdet till filen/proc/sys/kernel/printk
., Detta är dock en tillfällig lösning, och den nya inställningen kommer inte att bestå av en omstart av datorn., Säg att vi vill ändra standard-konsolen loglevel till3
här är vad vi skulle köra:
$ echo "3" | sudo tee /proc/sys/kernel/printk
Eller om du använderroot
konto direkt:
# echo "3" > /proc/sys/kernel/printk
Genom att titta på innehållet i filen, kan vi kontrollera det loglevel nu är det vi som anges i våra kommando:
$ cat /proc/sys/kernel/printk3 4 1 7
Vi kan få samma resultat genom att användasysctl
kommando:
sudo sysctl -w kernel.printk=3
Låt mig upprepa det igen: detta är tillfälliga, icke-beständiga lösningar., För att ändra standardloggnivån på ett ihållande sätt måste vi ändra/etc/default/grub
– filen, skickaloglevel
– parametern till kärnans kommandorad vid uppstart: ovan är innehållet i/etc / default / grub-filen, och markerade det är parametern som ska läggas tillGRUB_CMDLINE_LINUX
, som innehåller instruktionerna för kärnans kommandorad. I det här fallet använde viloglevel=3
, eftersom vi ville använda den specifika logleveln för konsolen., Efter att ha ändrat filen och sparat ändringarna måste vi ladda om grub så att den nya konfigurationen kommer att tillämpas vid nästa omstart: kommandot för att utföra denna operation beror på fördelningen vi kör. Generellt är kommandot:
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
på Debianbaserad distribution används ett wrapper-skript för att i princip utföra samma operation:
$ sudo update-grub
grub-konfigurationen kommer att uppdateras, och vid nästa omstart kommer den angivna loggnivån att antas som standard.,
slutsatser
i den här handledningen har vi lärt oss hur linuxkärneloggarna organiseras beroende på deras allvarlighetsgrad. Vi såg också hur vi kan ändra standardinställningen så att endast vissa meddelanden som skickas av kärnan visas på konsolen, med samma kriterier. Slutligen såg vi hur man gjorde dessa förändringar ihållande.