Løber du tør for diskplads på Linux? Tjek dine logfiler!

Nøgle takeaways

  • Linux-systemlogfiler kan optage en betydelig mængde diskplads.
  • Dit system vil normalt komprimere ældre logfiler for at spare diskplads.
  • Du kan bruge kommandoen journalctl eller tail -f til at se logfiler og identificere problematiske processer.

Selvom Linux-systemer har ry for at være smarte, kan du opleve, at du pludselig er ved at løbe tør for diskplads. Hvorfor er dette sket? Det største spor, og muligvis den største synder, vil blive fundet i dine Linux-systemlogfiler.

Hvorfor optager logfiler så meget diskplads?

Logfiler er en vigtig del af administrationen af ​​dit Linux-system. Du kan se, hvad der sker med din maskine, og du kan også fejlfinde problemer, der opstår. Linux-logningsdæmoner ligner Event Viewer på Windows. Kævlerne fylder normalt ikke meget. Dette skyldes, at de fleste distros automatisk vil styre, hvor meget plads de optager på din disk.

Linux-logfiler har historisk set været almindelige tekstfiler, men med mange store distros, der flytter til systemd, er de binære filer, der administreres af journald, en systemd-tjeneste. Alternativt vil din distro enten bruge rsyslog eller syslog-ng.

Fordi gamle logfiler ikke er relevante, og store arkiver kan optage plads, vil dit system normalt “rotere” dem – arkivere, komprimere og i sidste ende slette dem – for at spare diskplads til de ting, du rent faktisk ønsker.

  Sådan installeres SmartGit på Linux

Selvom du måske ikke tror, ​​at logfiler ville tage meget plads, kan en funktionsfejl proces fylde dine logfiler hurtigere, end systemet kan rotere dem.

Hvis du tjekker din diskplads og pludselig er ved at løbe tør, og du ved, at du ikke har downloadet nogen store filer for nylig, kan årsagen være et problem med dine Linux-systemlogfiler. Du bliver nødt til at finde ud af, hvad der fylder dine systemlogfiler og ordne det.

Du kan kontrollere, hvor meget diskplads du bruger med kommandoen du -h:

 du -h /var/log 

Du vil se en liste over hver undermappe sammen med den samlede mængde plads, den fylder:

Find dine logfiler

Hvis du bruger en moderne Linux distro med systemd, vil du bruge programmet journalctl til at se dine logfiler; journald gemmer typisk logfiler i mapperne /var/log/journal eller /run/log/journal, afhængigt af distroen.

For at se logfilerne skal du skrive journald-kommandoen ved shell-prompten. Der er andre nyttige kommandolinjemuligheder. For at se opstartsmeddelelserne skal du bruge muligheden -b:

 journalctl -b 

Du kan se dit systems logmeddelelser i realtid med -f-indstillingen.

Hvis din distro ikke bruger systemd, finder du logfilerne i mappen /var/log. Selv med systemd gemmer nogle programmer stadig deres logfiler i denne mappe. Disse er almindelige tekstfiler, som du kan undersøge med et hjælpeprogram som en personsøger, såsom mindre.

  Sådan udvindes Bitcoin Gold (BTG) Cryptocurrency på Linux ved hjælp af Minergate

For eksempel for at læse systemloggen:

 less /var/log/syslog

Du vil se det fulde indhold af logfilen, som kan indeholde tusindvis af linjer:

Du kan også overvåge det i realtid med halekommandoens -f-indstilling:

 tail -f /var/log/syslog

Hvordan Linux roterer logfiler

I mappen /var/log kan du bemærke filer med navne, der ender på “log.N.gz”, hvor N er et tal. Dette er resultatet af, at systemet roterer ældre logfiler. De fleste distros har et værktøj, der vil gøre dette automatisk, kaldet “logrotate.” logrotate er typisk sat op til at køre som et cron-job eller en systemd timer.

Som standard vil de fleste distros køre logrotate dagligt. logrotate komprimerer ældre logfiler ved hjælp af gzip, som det fremgår af “.gz” filtypenavne. Den bruger en tærskel, som alder eller filstørrelse, til at gøre dette, og en anden tærskel for til sidst at slette gamle logfiler.

Standardindstillingerne for logrotate er tilstrækkelige for de fleste desktopbrugere. Du kan justere logrorates adfærd ved at redigere filen /etc/logrotate.conf som superbruger, såvel som at redigere dit systems cron- eller systemd-timerfiler, men disse operationer er egentlig kun relevante for serveradministratorer.

  Sådan installeres JetBrains RubyMine på Linux

Du er bedre stillet med at ordne det, der fylder dine logfiler, end at justere konfigurationsfiler for at spare diskplads. Hvis du absolut skal ændre konfigurationen, kan du læse logroter manualsiden.

Hvilke logfiler er sikre at slette?

Hvis alt andet fejler, og du er desperat efter at frigøre diskplads, kan du manuelt slette de arkiverede logfiler, der ender på “.gz”, før logrotate gør det. Du kan bruge rm, men du bliver nødt til at køre det som superbruger, da disse filer tilhører systemet:

 sudo rm /var/syslog/syslog.*gz 

Denne kommando vil slette alle filer, der indeholder “syslog.” og slutter med “gz.”

Vær altid meget forsigtig, når du kører kommandoer via sudo, især destruktive kommandoer som rm!

Du bør normalt ikke slette filer i systemmapper uden fuldt ud at forstå implikationerne, men arkiverede logfiler vil ikke forårsage problemer, hvis de mangler. Hvis du har et problem, skal du muligvis henvise til ældre logfiler.

Sådan rettes det, der fylder dine logfiler

Den bedste måde at finde ud af, hvad der fylder dine logfiler, er at følge logfilerne med journalctl eller tail -f mulighederne. Dit bedste bud er at gentage fejlmeddelelser.

Du bliver nødt til at håndtere den stødende proces for at spare diskplads. Hvis du ikke ved, hvad der forårsager fejlen, kan du søge på nettet eller bede om hjælp på din distros supportkanaler. Når du endelig har rettet det, kan du slette de ældre logfiler sikkert. Du burde have meget mere diskplads nu.