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:
Hvis logrotate ikke allerede er installeret, kan du installere det ved at køre følgende kommando:
sudo apt-get install logrotate
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.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.
For at køre logrotate manuelt og rotere logfilerne med det samme, brug:
sudo logrotate -f /etc/logrotate.d/myprogram
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.