Sådan roterer du logfiler med logrotate for Linux-programmer uden HUP-signal support

Hvordan kan en logfil, der modtager output fra et Linux-program via et shell script, roteres (maksimal størrelse, skift til en anden fil, behold kun et begrænset antal filer) ved brug af logrotate, når programmet ikke håndterer HUP-signaler?

For at rotere en logfil for et Linux-program, der ikke håndterer HUP-signaler, skal du installere logrotate, oprette en konfigurationsfil, teste konfigurationen, køre logrotate manuelt og sikre, at cron-tjenesten er aktiveret.

Sådan roteres en logfil med logrotate for et Linux-program, der ikke håndterer HUP-signaler

For at rotere en logfil, der modtager output fra et Linux-program via et shell script, og hvor programmet ikke håndterer HUP-signaler, kan du bruge logrotate. Følg disse trin:

  1. Installer logrotate:

    Hvis logrotate ikke allerede er installeret, kan du installere det ved at køre følgende kommando:

    sudo apt-get install logrotate
  2. Opret en logrotate konfigurationsfil:

    Opret en konfigurationsfil for logrotate, f.eks. /etc/logrotate.d/myprogram. Indsæt følgende indhold i filen:

    
    /var/log/myprogram.log {
        size 10M
        rotate 5
        copytruncate
        compress
        delaycompress
        missingok
        notifempty
    }
        
    • size 10M: Roter logfilen, når den når 10 MB.
    • rotate 5: Behold kun de seneste 5 roterede logfiler.
    • copytruncate: Kopier den aktuelle logfil og tøm den derefter. Dette er nyttigt, når programmet ikke kan håndtere HUP-signaler.
    • compress: Komprimer de roterede logfiler for at spare plads.
    • delaycompress: Forsink komprimeringen af den seneste roterede logfil til næste rotation.
    • missingok: Ignorer fejl, hvis logfilen mangler.
    • notifempty: Roter ikke logfiler, der er tomme.
  3. Test logrotate konfigurationen:

    For at sikre, at konfigurationen fungerer korrekt, kan du teste den ved at køre:

    sudo logrotate -d /etc/logrotate.d/myprogram

    Dette vil vise, hvad logrotate vil gøre, uden faktisk at udføre rotationen.

  4. Kør logrotate manuelt:

    For at køre logrotate manuelt og rotere logfilerne med det samme, brug:

    sudo logrotate -f /etc/logrotate.d/myprogram
  5. Automatiser logrotate:

    Logrotate kører normalt automatisk via cron. Sørg for, at cron-tjenesten er aktiveret og kører:

    sudo systemctl enable cron
    sudo systemctl start cron

Ved at følge disse trin kan du effektivt rotere logfiler for et Linux-program, der ikke håndterer HUP-signaler, ved hjælp af logrotate.