GNU/Linux >> Linux Esercitazione >  >> Linux

HowTo:l'esercitazione definitiva sui comandi Logrotate con 10 esempi

La gestione efficace dei file di registro è un'attività essenziale per l'amministratore di sistema Linux.

In questo articolo, discutiamo come eseguire le seguenti operazioni sui file di registro utilizzando logrotate UNIX utilità.

  • Ruota il file di registro quando la dimensione del file raggiunge una dimensione specifica
  • Continua a scrivere le informazioni di registro nel file appena creato dopo aver ruotato il vecchio file di registro
  • Comprime i file di registro ruotati
  • Specifica l'opzione di compressione per i file di registro ruotati
  • Ruota i vecchi file di registro con la data nel nome del file
  • Esegui script di shell personalizzati subito dopo la rotazione del registro
  • Rimuovi i file di registro ruotati meno recenti

1. Registra file di configurazione

Di seguito sono riportati i file chiave di cui dovresti essere a conoscenza affinché logrotate funzioni correttamente.

/usr/sbin/logrotate – Il comando logrotate stesso.

/etc/cron.daily/logrotat e – Questo script di shell esegue il comando logrotate ogni giorno.

$ 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 – La configurazione della rotazione del registro per tutti i file di registro è specificata in questo file.

$ 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 – Quando i singoli pacchetti vengono installati sul sistema, eliminano le informazioni di configurazione della rotazione del registro in questa directory. Ad esempio, le informazioni sulla configurazione della rotazione del registro yum sono mostrate di seguito.

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

2. Opzione Logrotate size:ruota il file di registro quando la dimensione del file raggiunge un limite specifico

Se desideri ruotare un file di registro (ad esempio, /tmp/output.log) per ogni 1 KB, crea logrotate.conf come mostrato di seguito.

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

Questa configurazione logrotate ha le seguenti tre opzioni:

  • size 1k – logrotate viene eseguito solo se la dimensione del file è uguale (o maggiore di) questa dimensione.
  • crea:ruota il file originale e crea il nuovo file con l'autorizzazione, l'utente e il gruppo specificati.
  • ruota:limita il numero di rotazione del file di registro. Quindi, questo manterrebbe solo i 4 file di registro ruotati recenti.

Prima della logrotation, la dimensione di output.log è la seguente:

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

Ora, esegui il comando logrotate come mostrato di seguito. L'opzione -s specifica il nome del file per scrivere lo stato logrotate.

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

Nota:ogni volta che hai bisogno della rotazione del log per alcuni file, prepara la configurazione logrotate ed esegui manualmente il comando logroate.
Dopo la logrotation, la dimensione di output.log è la seguente:

$ 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

Alla fine questo continuerà a seguire la configurazione dei file di registro ruotati.

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

Ricorda che dopo la rotazione del registro, il file di registro corrispondente al servizio punterebbe ancora al file ruotato (output.log.1) e continua a scriverci. Puoi usare il metodo sopra, se vuoi ruotare apache log_accesso o log_errore ogni 5 MB.

Idealmente, dovresti modificare /etc/logrotate.conf per specificare le informazioni logrotate per un file di registro specifico.

Inoltre, se disponi di enormi file di registro, puoi utilizzare:10 fantastici esempi per visualizzare enormi file di registro in Unix

3. Opzione Logrotate copytruncate:continua a scrivere le informazioni di registro nel file appena creato dopo aver ruotato il vecchio file di registro.

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

copytruncate istruisce logrotate a creare la copia del file originale (ovvero ruotare il file di registro originale) e tronca il file originale a una dimensione di zero byte. Questo aiuta il rispettivo servizio che appartiene a quel file di registro in grado di scrivere nel file corretto.

Durante la manipolazione dei file di registro, potresti trovare utile il sostituto sed, sed delete tips.

4. Opzione comprimi logrotate:comprime i file di registro ruotati

Se utilizzi l'opzione di compressione come mostrato di seguito, i file ruotati verranno compressi con l'utilità gzip.

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

Output del file di registro compresso:

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

5. Opzione Logrotate dateext:ruota il vecchio file di registro con la data nel nome del file di registro

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

Dopo la configurazione di cui sopra, noterai la data nel file di registro ruotato come mostrato di seguito.

$ 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

Questo funzionerebbe solo una volta al giorno. Perché quando tenta di ruotare la prossima volta nello stesso giorno, il file ruotato in precedenza avrà lo stesso nome file. Quindi, logrotate non avrà successo dopo la prima esecuzione nello stesso giorno.

In genere è possibile utilizzare tail -f per visualizzare l'output del file di registro in tempo reale. Puoi anche combinare più output tail -f e visualizzarlo su un singolo terminale.

6. Opzione Logrotate mensile, giornaliera, settimanale:ruota il file di registro settimanale/giornaliero/mensile

Per aver eseguito la rotazione una volta al mese,

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

Aggiungi la parola chiave settimanale come mostrato di seguito per la rotazione settimanale del registro.

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

Aggiungi la parola chiave giornaliera come mostrato di seguito per ogni rotazione del registro giornaliera. Puoi anche ruotare i registri ogni ora.

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

7. Opzione Logrotate postrotate endscript:esegui script di shell personalizzati subito dopo la rotazione del registro

Logrotate ti consente di eseguire i tuoi script di shell personalizzati dopo aver completato la rotazione del file di registro. La configurazione seguente indica che eseguirà myscript.sh dopo la logrotation.

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

8. Opzione Logrotate maxage:rimuovi i file di registro ruotati meno recenti

Logrotate rimuove automaticamente i file ruotati dopo un determinato numero di giorni. L'esempio seguente indica che i file di registro ruotati verranno rimossi dopo 100 giorni.

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

9. Opzione Logrotate missingok:non restituisce un errore se il file di registro è mancante

Puoi ignorare il messaggio di errore quando il file effettivo non è disponibile utilizzando questa opzione come mostrato di seguito.

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

10. Opzione Logrotate compresscmd e compressxt:Specificare il comando di compressione per la rotazione del file di registro

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

Le seguenti opzioni di compressione sono specificate sopra:

  • compress – Indica che la compressione deve essere eseguita.
  • compresscmd – Specifica il tipo di comando di compressione da utilizzare. Ad esempio:/bin/bzip2
  • compressext:specifica l'estensione del file di registro ruotato. Senza questa opzione, il file ruotato avrebbe l'estensione predefinita come .gz. Quindi, se usi bzip2 compressioncmd, specifica l'estensione come .bz2 come mostrato nell'esempio sopra.

Linux
  1. Ruota e archivia i registri con il comando logrotate di Linux

  2. Ordina il comando in Linux con esempi

  3. Il tutorial del comando Numfmt con esempi per principianti

  4. Il tutorial sui comandi di tipo con esempi per principianti

  5. Il tutorial sul comando Shuf con esempi per principianti

Il tutorial sui comandi principali con esempi per principianti

Il tutorial del comando mktemp con esempi per principianti

Il tutorial sul comando Grep con esempi per principianti

Il tutorial sui comandi Uniq con esempi per principianti

Il tutorial del comando fc con esempi per principianti

The Ultimate Tar Command Tutorial con 10 esempi pratici