GNU/Linux >> Linux Esercitazione >  >> Linux

C'è un modo corretto per cancellare i log?

Soluzione 1:

Puoi usare:

> /var/log/mail.log

Ciò troncerà il registro senza che tu debba modificare il file. È anche un modo affidabile per recuperare lo spazio. A volte le persone commettono l'errore di usare rm sul registro e quindi ricreare il nome del file, se un altro processo ha il file aperto, non si recupera lo spazio fino a quando quel processo non chiude il suo handle su di esso e puoi rovinare i suoi permessi.

Inoltre, se stai osservando il contenuto del registro, potresti voler utilizzare tail comando:

tail -f /var/log/mail.log

Ctrl-C interromperà l'accodamento.

Soluzione 2:

Sì, c'è un modo corretto:non chiari log a tutti. Tu ruoti loro. La rotazione implica il passaggio dell'output del registro a un nuovo file, con lo stesso nome, con i precedenti N file di registro conservati sotto un insieme di N nomi di file correlati.

Il modo in cui si ruotano i log dipende innanzitutto da come li si scrive. Questo è un punto spesso trascurato. Alcune delle risposte qui lo toccano almeno, menzionando che alcuni programmi di registrazione mantengono un descrittore di file aperto per il file di registro, quindi la semplice eliminazione del file non libererà lo spazio, o addirittura cambierà l'output in un nuovo file di registro.

Se il programma che scrive il file di log è multilog dal daemontools package, per esempio, allora non fai nulla per ruotare i log — niente script manuali, niente cron lavori. Basta dire a multilog quell'output di log è in una directory, e manterrà esso stesso un set di N file di log ruotati automaticamente e con limite di dimensione in quella directory.

Se il programma che scrive i file di log è svlogd dal runit package, per un altro esempio, vale più o meno lo stesso. Non fai nulla a parte puntare lo strumento su una directory. Manterrà esso stesso un set di N file di registro ruotati automaticamente e con limite di dimensione in quella directory.

Se stai usando rsyslog per scrivere file di registro, è possibile indicare al programma di registrazione di arrestarsi dopo che il file di registro raggiunge una certa dimensione ed eseguire uno script. Devi scrivere la sostanza dello script, per rinominare effettivamente il file di registro ed eliminare i vecchi file di registro in base ai vincoli di dimensione totale, ma almeno il programma di registrazione ha chiuso il file e ha messo in pausa la scrittura del registro mentre ciò accade.

Il vecchio syslogd modo di ruotare i log, ancora previsto da programmi di logging come syslog-ng e come esemplificato da strumenti come logrotate menzionato da djangofan in un'altra risposta qui, è in qualche modo più casuale. Uno esegue un cron lavoro che rinomina periodicamente i file di registro e riavvia il demone di registrazione (utilizzando qualsiasi supervisore del demone sotto cui è in esecuzione). Il problema con questo, ovviamente, è che non applica un limite di dimensioni complessive. Nelle settimane lente si possono ottenere N file di registro giornalieri molto piccoli, mentre nei giorni di grande affluenza si può ottenere 1 file di registro molto grande che supera di gran lunga il limite di dimensione.

Questo è il motivo per cui strumenti successivi e migliori come multilog e svlogd hanno opzioni di configurazione della dimensione del file e controllano effettivamente le dimensioni del file di registro, ovviamente. Il mondo ha imparato che eseguire il polling dei log in base a una pianificazione con cron lavori, o anche un logrotate demone, lascia le finestre in modo che la dimensione sia errata e che il posto giusto per avere questi controlli, e quindi rigorosamente imporre limiti di dimensione definiti dall'amministratore in modo che i propri file di registro non inghiottiscano mai la partizione in cui si trovano, è nel programma che sta effettivamente scrivendo i file in primo luogo.

Soluzione 3:

Puoi usare anche questo...

truncate /opt/package/logs/*.log --size 0

Qui tutti i file di log in /opt/package/logs diventeranno vuoti..

Soluzione 4:

Sì, c'è uno strumento per Linux chiamato LogRotate .

Soluzione 5:

Se il motivo per cui cancelli il registro è liberare spazio, puoi cat /dev/null su di essi, senza interrompere i programmi che vi scrivono. Non cancellarli mai! alcuni software potrebbero lamentarsi smettendo di funzionare o ignorando completamente il registro fino al prossimo riavvio

cat /dev/null > /path/to/logfile

# to empty all the logs in a directory
for i in /var/log/*; do cat /dev/null > $i; done

Linux
  1. Qual è un modo conveniente per controllare cosa viene aggiunto a un file di registro in tempo reale?

  2. Trova il file di registro di Firefox?

  3. C'è un modo per "uniq" per colonna?

  4. Qual è il modo corretto di usare inotify?

  5. C'è un modo per ritagliare un file NETCDF?

Configurazione di logrotate in Linux

Rotazione del file di registro

Registri di sistema

C'è un modo per cambiare le scorciatoie nel comandante di mezzanotte?

creare un file di registro

reindirizzare i log del servizio systemd su file