GNU/Linux >> Znalost Linux >  >> Linux

HowTo:The Ultimate Logrotate Command Tutorial s 10 příklady

Efektivní správa souborů protokolů je základním úkolem správce systému Linux.

V tomto článku probereme, jak provádět následující operace se soubory protokolu pomocí UNIX logrotate utility.

  • Otočte soubor protokolu, když velikost souboru dosáhne určité velikosti
  • Po otočení starého souboru protokolu pokračujte v zapisování informací protokolu do nově vytvořeného souboru
  • Komprimujte otočené soubory protokolu
  • Určete možnost komprese pro rotované soubory protokolu
  • Otočte staré soubory protokolu s datem v názvu souboru
  • Spouštět vlastní skripty shellu ihned po otočení protokolu
  • Odeberte starší rotované soubory protokolu

1. Logrotate Configuration files

Níže jsou uvedeny klíčové soubory, které byste měli znát, aby logrotate fungovalo správně.

/usr/sbin/logrotate – Samotný příkaz logrotate.

/etc/cron.daily/logrotat e – Tento skript shellu spouští příkaz logrotate každý den.

$ cat /etc/cron.daily/logrotate
#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

/etc/logrotate.conf – Konfigurace rotace protokolu pro všechny soubory protokolu je specifikována v tomto souboru.

$ cat /etc/logrotate.conf
weekly
rotate 4
create
include /etc/logrotate.d
/var/log/wtmp {
    monthly
    minsize 1M
    create 0664 root utmp
    rotate 1
}

/etc/logrotate.d – Když jsou v systému nainstalovány jednotlivé balíčky, vypustí z tohoto adresáře informace o konfiguraci rotace protokolu. Například informace o konfiguraci rotace yum log jsou uvedeny níže.

$ cat /etc/logrotate.d/yum
/var/log/yum.log {
    missingok
    notifempty
    size 30k
    yearly
    create 0600 root root
}

2. Možnost Logrotate size:Otočit soubor protokolu, když velikost souboru dosáhne určitého limitu

Pokud chcete otočit soubor protokolu (například /tmp/output.log) o každých 1 kB, vytvořte soubor logrotate.conf, jak je uvedeno níže.

$ cat logrotate.conf
/tmp/output.log {
        size 1k
        create 700 bala bala
        rotate 4
}

Tato konfigurace logrotate má následující tři možnosti:

  • velikost 1k – logrotate se spustí, pouze pokud je velikost souboru rovna (nebo větší než) této velikosti.
  • vytvořit – otočte původní soubor a vytvořte nový soubor se zadaným oprávněním, uživatelem a skupinou.
  • rotovat – omezuje počet rotací souborů protokolu. To by tedy zachovalo pouze poslední 4 otočené soubory protokolu.

Před logrotation je následující velikost souboru output.log:

$ ls -l /tmp/output.log
-rw-r--r-- 1 bala bala 25868 2010-06-09 21:19 /tmp/output.log

Nyní spusťte příkaz logrotate, jak je znázorněno níže. Volba -s určuje název souboru pro zápis stavu logrotate.

$ logrotate -s /var/log/logstatus logrotate.conf

Poznámka:Kdykoli potřebujete rotaci logu pro některé soubory, připravte konfiguraci logrotate a spusťte příkaz logroate ručně.
Po logrotation je velikost souboru output.log:

$ ls -l /tmp/output*
-rw-r--r--  1 bala bala 25868 2010-06-09 21:20 output.log.1
-rwx------ 1 bala bala        0 2010-06-09 21:20 output.log

Nakonec to zachová následující nastavení rotovaných souborů protokolu.

  • output.log.4.
  • output.log.3
  • output.log.2
  • output.log.1
  • output.log

Mějte prosím na paměti, že po rotaci logu bude logovací soubor odpovídat službě, stále bude ukazovat na rotovaný soubor (output.log.1) a bude se do něj nadále zapisovat. Výše uvedený způsob můžete použít, pokud chcete otočit apache access_log nebo error_log každých 5 MB.

V ideálním případě byste měli upravit soubor /etc/logrotate.conf tak, aby specifikoval informace logrotate pro konkrétní soubor protokolu.

Pokud máte velké soubory protokolů, můžete také použít:10 úžasných příkladů pro prohlížení obrovských souborů protokolu v Unixu

3. Možnost Logrotate copytruncate:Po otočení starého souboru protokolu pokračujte v zapisování informací protokolu do nově vytvořeného souboru.

$ cat logrotate.conf
/tmp/output.log {
         size 1k
         copytruncate
         rotate 4
}

copytruncate pokyn logrotate vytvořit kopii původního souboru (tj. otočit původní soubor protokolu) a zkrátit původní soubor na velikost nula bajtů. To pomáhá příslušné službě, která patří do tohoto souboru protokolu, zapisovat do správného souboru.

Při manipulaci se soubory protokolu vám mohou být užitečné tipy pro nahrazení sed, sed delete.

4. Možnost komprimace Logrotate:Komprimuje otočené soubory protokolu

Pokud použijete možnost komprimovat, jak je uvedeno níže, otočené soubory budou komprimovány pomocí nástroje gzip.

$ cat logrotate.conf
/tmp/output.log {
        size 1k
        copytruncate
        create 700 bala bala
        rotate 4
        compress
}

Výstup komprimovaného souboru protokolu:

$ ls /tmp/output*
output.log.1.gz output.log

5. Možnost Logrotate dateext:Otočte starý soubor protokolu s datem v názvu souboru protokolu

$ cat logrotate.conf
/tmp/output.log {
        size 1k
        copytruncate
        create 700 bala bala
        dateext
        rotate 4
        compress
}

Po výše uvedené konfiguraci si všimnete data v rotovaném souboru protokolu, jak je znázorněno níže.

$ ls -lrt /tmp/output*
-rw-r--r--  1 bala bala 8980 2010-06-09 22:10 output.log-20100609.gz
-rwxrwxrwx 1 bala bala     0 2010-06-09 22:11 output.log

To by fungovalo pouze jednou za den. Protože když se pokusí otočit příště ve stejný den, dříve otočený soubor bude mít stejný název souboru. Logrotate tedy nebude úspěšný po prvním spuštění ve stejný den.

Obvykle můžete použít tail -f k zobrazení výstupu souboru protokolu v reálném čase. Můžete dokonce kombinovat více výstupů tail -f a zobrazit je na jednom terminálu.

6. Možnost Logrotate měsíční, denní, týdenní:Rotujte soubor protokolu týdně/denně/měsíčně

Za provedení rotace jednou měsíčně

$ cat logrotate.conf
/tmp/output.log {
        monthly
        copytruncate
        rotate 4
        compress
}

Přidejte týdenní klíčové slovo, jak je uvedeno níže, pro týdenní rotaci protokolu.

$ cat logrotate.conf
/tmp/output.log {
        weekly
        copytruncate
        rotate 4
        compress
}

Přidejte denní klíčové slovo, jak je uvedeno níže, pro každou rotaci denního protokolu. Záznamy můžete také střídat každou hodinu.

$ cat logrotate.conf
/tmp/output.log {
        daily
        copytruncate
        rotate 4
        compress
}

7. Možnost Logrotate postrotate endscript:Spouštět vlastní skripty shellu ihned po rotaci protokolu

Logrotate vám umožňuje spouštět vlastní skripty shellu poté, co dokončí rotaci souboru protokolu. Následující konfigurace naznačuje, že po logrotation spustí myscript.sh.

$ cat logrotate.conf
/tmp/output.log {
        size 1k
        copytruncate
        rotate 4
        compress
        postrotate
               /home/bala/myscript.sh
        endscript
}

8. Možnost Logrotate maxage:Odstraňte starší rotované soubory protokolu

Logrotate automaticky odstraní otočené soubory po určitém počtu dní. Následující příklad ukazuje, že rotované soubory protokolu budou odstraněny po 100 dnech.

$ cat logrotate.conf
/tmp/output.log {
        size 1k
        copytruncate
        rotate 4
        compress
        maxage 100
}

9. Možnost Logrotate missingok:Nevracet chybu, pokud soubor protokolu chybí

Pokud skutečný soubor není k dispozici, můžete chybovou zprávu ignorovat pomocí této možnosti, jak je uvedeno níže.

$ cat logrotate.conf
/tmp/output.log {
        size 1k
        copytruncate
        rotate 4
        compress
        missingok
}

10. Volba Logrotate compresscmd a compressext:Zadejte příkaz komprese pro rotaci souboru protokolu

$ cat logrotate.conf
/tmp/output.log {
        size 1k
        copytruncate
        create
        compress
        compresscmd /bin/bzip2
        compressext .bz2
        rotate 4
}

Výše jsou uvedeny následující možnosti komprese:

  • komprimovat – Označuje, že je třeba provést kompresi.
  • compresscmd – Určete, jaký typ příkazu pro kompresi se má použít. Například:/bin/bzip2
  • compressext – zadejte příponu rotovaného souboru protokolu. Bez této možnosti by měl otočený soubor výchozí příponu .gz. Pokud tedy používáte kompresi bzip2cmd, zadejte příponu jako .bz2, jak je znázorněno ve výše uvedeném příkladu.

Linux
  1. Otočte a archivujte protokoly pomocí příkazu logrotate systému Linux

  2. Třídit příkaz v Linuxu s příklady

  3. Kurz příkazu typu s příklady pro začátečníky

  1. Návod Shuf Command s příklady pro začátečníky

  2. Základní příklady příkazu File v Linuxu

  3. Výukový program Ultimate Bash Array s 15 příklady

  1. Jak používat příkaz chgrp s příklady

  2. Bash HereDoc výukový program s příklady

  3. Numfmt Command Tutorial s příklady pro začátečníky