Får du slut på diskutrymme på Linux? Kontrollera dina loggar!

Viktiga takeaways

  • Linux-systemloggar kan ta upp en betydande mängd diskutrymme.
  • Ditt system kommer normalt att komprimera äldre loggfiler för att spara diskutrymme.
  • Du kan använda kommandot journalctl eller tail -f för att visa loggar och identifiera problematiska processer.

Medan Linux-system har ett rykte om sig att vara smarta, kanske du upptäcker att du plötsligt har ont om diskutrymme. Varför har detta hänt? Den största ledtråden, och möjligen den största boven, kommer att hittas i dina Linux-systemloggar.

Varför tar loggar upp så mycket diskutrymme?

Loggar är en viktig del av att hantera ditt Linux-system. Du kan se vad som händer med din maskin och du kan även felsöka problem som uppstår. Linux-loggningsdemoner liknar Event Viewer på Windows. Stockarna tar normalt inte mycket plats. Detta beror på att de flesta distros automatiskt kommer att hantera hur mycket utrymme de tar upp på din disk.

Linux-loggar har historiskt sett varit vanliga textfiler, men med många större distributioner som går över till systemd är de binära filer som hanteras av journald, en systemd-tjänst. Alternativt kommer din distro antingen använda rsyslog eller syslog-ng.

Eftersom gamla loggar inte är relevanta och stora arkiv kan ta upp utrymme, kommer ditt system vanligtvis att ”rotera” dem – arkivera, komprimera och slutligen ta bort dem – för att spara diskutrymme för de saker du faktiskt vill ha.

Även om du kanske inte tror att loggar skulle ta upp mycket utrymme, kan en felaktig process fylla upp dina loggar snabbare än systemet kan rotera dem.

Om du kontrollerar ditt diskutrymme och finner att du plötsligt börjar ta slut, och du vet att du inte har laddat ner några stora filer nyligen, kan orsaken vara ett problem med dina Linux-systemloggar. Du måste ta reda på vad som fyller upp dina systemloggar och fixa det.

Du kan kontrollera hur mycket diskutrymme du använder med kommandot du -h:

 du -h /var/log 

Du kommer att se en lista över varje underkatalog, tillsammans med den totala mängden utrymme den tar upp:

Hitta dina loggar

Om du använder en modern Linux-distro med systemd, kommer du att använda programmet journalctl för att se dina loggar; journald lagrar vanligtvis loggar i katalogerna /var/log/journal eller /run/log/journal, beroende på distro.

För att visa loggarna, skriv kommandot journald vid skalprompten. Det finns andra användbara kommandoradsalternativ. För att se startmeddelandena, använd alternativet -b:

 journalctl -b 

Du kan se ditt systems loggmeddelanden i realtid med alternativet -f.

Om din distro inte använder systemd, hittar du loggarna i katalogen /var/log. Även med systemd lagrar vissa program fortfarande sina loggar i den här katalogen. Det här är vanliga textfiler som du kan granska med ett verktyg som en personsökare, till exempel mindre.

För att till exempel läsa systemloggen:

 less /var/log/syslog

Du kommer att se hela innehållet i loggfilen som kan innehålla tusentals rader:

Du kan också övervaka det i realtid med svanskommandots -f-alternativ:

 tail -f /var/log/syslog

Hur Linux roterar loggfiler

I katalogen /var/log kan du lägga märke till filer med namn som slutar på ”log.N.gz”, där N är ett nummer. Detta är resultatet av att systemet roterar äldre loggar. De flesta distros har ett verktyg som gör detta automatiskt, kallat ”logrotate”. logrotate är vanligtvis inställd för att köras som ett cron-jobb eller en systemd-timer.

Som standard kommer de flesta distros att köra logrotate dagligen. logrotate komprimerar äldre loggar med gzip, vilket framgår av filtilläggen ”.gz”. Den använder en tröskel, som ålder eller filstorlek, för att göra detta, och en annan tröskel för att så småningom ta bort gamla loggfiler.

Standardalternativen för logrotate är tillräckliga för de flesta datoranvändare. Du kan justera logrorates beteende genom att redigera filen /etc/logrotate.conf som superanvändare, samt redigera ditt systems cron- eller systemd-timerfiler, men dessa operationer är egentligen bara relevanta för serveradministratörer.

Det är bättre att fixa det som fyller dina loggar än att justera konfigurationsfiler för att spara diskutrymme. Om du absolut måste ändra konfigurationen kan du läsa logrotera manualsidan.

Vilka loggar är säkra att radera?

Om allt annat misslyckas och du är desperat efter att frigöra diskutrymme, kan du manuellt radera de arkiverade loggfilerna som slutar på ”.gz” innan logrotate gör det. Du kan använda rm, men du måste köra det som superanvändare eftersom dessa filer tillhör systemet:

 sudo rm /var/syslog/syslog.*gz 

Detta kommando tar bort alla filer som innehåller ”syslog.” och slutar med ”gz.”

Var alltid mycket försiktig när du kör kommandon via sudo, speciellt destruktiva kommandon som rm!

Du bör normalt inte ta bort filer i systemkataloger utan att helt förstå konsekvenserna, men arkiverade loggar kommer inte att orsaka några problem om de saknas. Om du har ett problem kan du dock behöva hänvisa till äldre loggar.

Så här fixar du det som fyller dina loggar

Det bästa sättet att ta reda på vad som fyller upp dina loggar är att följa loggarna med alternativen journalctl eller tail -f. Det bästa är att upprepa felmeddelanden.

Du måste ta itu med den kränkande processen för att spara diskutrymme. Om du inte vet vad som orsakar felet kan du söka på webben eller be om hjälp på din distros supportkanaler. När du äntligen har fixat det kan du ta bort de äldre loggarna på ett säkert sätt. Du borde ha mycket mer diskutrymme nu.