Elimina tutto di / var / log?


26

Posso cancellare tutto in /var/log? O dovrei eliminare solo i file (ricorsivamente) /var/logma lasciare le cartelle?

Qualcuno ha una buona rmriga di comando? (Le mie capacità di amministratore mi lasciano nervoso.)

Nota: sto usando Debian. Non sono sicuro di quale versione.


3
L'eliminazione dei file di registro è una cattiva idea (è inoltre necessario trovare ogni processo in esecuzione che ha il proprio file di registro e "kill -HUP", un riavvio graduale che comporterà il programma di ricreare tutti i file di registro necessari). Consiglio vivamente di non cancellare i file di registro, fare affidamento su utility come logrotate per gestire automaticamente il contenuto di / var / log (fa cose come HUP i processi) Se potessi, vorrei affrontarlo da una prospettiva diversa. Quale problema stai cercando di risolvere che ti ha portato a considerare questo?
Twirrim,

Risposte:


22

Invece di eliminare i file è necessario ruotarli, ad esempio utilizzando logrotate.

Non si sa mai quando saranno effettivamente necessari i registri di qualche tempo fa, quindi è meglio archiviarli (fino a un'età ragionevole, ad esempio 3 mesi).

logrotate può comprimere i tuoi vecchi file di registro in modo che non occupino molto spazio su disco.


3
logrotate può anche eliminare i file più vecchi.
Kevin M,

8
Bene, l'IMHO che cancella tutti i registri può avere perfettamente senso in alcuni casi. Ad esempio, voglio creare un'immagine della macchina virtuale da utilizzare per le nuove distribuzioni. Inutile dire che mi piacerebbe che fosse un sistema davvero pulito senza alcun registro, cronologia, cache ecc. Salvato.
Ivan,

2
Siamo spiacenti, ma guardare i file di registro di tre mesi è archeologia. Se raccogli registri per identificare i problemi, valutali rapidamente.
Contromodalità

4
@countermode Non sei mai in vena di nostalgia? Ti piace guardare i file di registro di 3 mesi pensando a bei vecchi tempi?
Broco,

OK, vedo il comando. Come usarlo? man logrotate dice di usarlo in cron. Suppongo con l'opzione -f?
SDsolar,

17

Se elimini tutto in / var / log, molto probabilmente finirai con tonnellate di messaggi di errore in pochissimo tempo, dal momento che ci sono cartelle che dovrebbero esistere (es. Exim4, apache2, apt, cups, mysql, samba e altro). Inoltre: ci sono alcuni servizi o applicazioni che non creeranno i loro file di registro, se non esistono. Si aspettano che sia presente almeno un file vuoto. Quindi la risposta diretta alla tua domanda è in realtà "Non farlo !!!" .

Come ha sottolineato joschi, non c'è motivo di farlo. Ho server debian in esecuzione che non hanno avuto un singolo file di registro cancellato da anni.


Non me ne sono reso conto. buono a sapersi. +1 + ha cambiato il mio accetto.

1
L'ho appena fatto. Desiderio! Avevo letto prima questa risposta
VarunAgw,

Esistono motivi validi per rimuovere i file di registro, IMHO. Ad esempio, stai esportando una macchina virtuale per l'utilizzo da parte di altri, ma non vuoi che l'immagine della macchina virtuale contenga i dettagli di tutto ciò che è accaduto prima dell'esportazione.
a3nm,

15

Elimina tutti i file:

find /var/log -type f -delete

Elimina tutti i file .gz e ruotati

find /var/log -type f -regex ".*\.gz$"
find /var/log -type f -regex ".*\.[0-9]$"

Prova a eseguire il comando senza "-delete", per testarlo.


L'ho trovato utile per cancellare i file di registro di una scatola di Vagrant prima del confezionamento.
Rudolf Vavruch,

10

Sto clonando macchine virtuali da un maestro. Ha perfettamente senso cancellare il registro sul master in modo che quando avvii i cloni non otterrai il registro del master. Ho fatto in tcsh:

cd /var/log
foreach ii ( `find . -type f` )
foreach? cp /dev/null $ii
foreach? end

che cancella i registri ma mantiene i file.


Questo dovrebbe essere limitato a un caso d'uso come descritto.
Sven

4
In bash: find / var / log / -type f -exec cp / dev / null {} \;
Gerard,

7

Pulizia di tutti i registri su un sistema Linux senza eliminare i file:

for CLEAN in $(find /var/log/ -type f)
do
    cp /dev/null  $CLEAN
done

Samba ( /var/www/samba) crea nomi di file di registro con indirizzi IP, è possibile eliminarli:

for CLEAN in $(find /var/log/samba -type f)
do
    rm -rf $CLEAN
done

2
Sceneggiatura utile.
Anmol Singh Jaggi,

Potreste scambiare cp /dev/null $CLEANcon > $CLEAN.
TorioBR

2

Puoi usare l'opzione ctime per trovare vecchi file ... ad esempio:

find -ctime +30

Come spiega bindbn, prova prima a trovare i file di recupero e dopo l'uso elimina l'opzione: D


2

/var/logspesso ha le autorizzazioni di drwxrwxr-x, quindi non è scrivibile dall'utente a meno che l'utente non sia root o appartenga a un gruppo privilegiato. Ciò significa che i nuovi file di registro non possono essere creati da utenti non privilegiati.

Le applicazioni che prevedono di accedere a un determinato punto /var/logtoccheranno spesso l'esistenza di un file da qualche parte nella /var/loggerarchia durante l'installazione (che si verifica spesso con privilegi elevati), chmode possibilmente chowne in quel momento saranno consentite le autorizzazioni appropriate per gli utenti non privilegiati che saranno usando l'applicazione.

I log di Apache, ad esempio, vengono solitamente scritti da nobody, che è un utente con il minor numero di privilegi possibile affinché Apache esegua il proprio lavoro senza mettere a rischio il sistema. Ma anche un'applicazione più ordinaria spesso si aspetta di poter scrivere in un file di log /var/log.

Quindi cosa succede se il file di registro e il percorso del file di registro non esistono? Dipende interamente dall'applicazione. Alcune applicazioni salteranno silenziosamente la registrazione. Altri creeranno molti avvisi. E altri semplicemente salveranno. Non esiste una regola rigida; dipende dalla vigilanza dello sviluppatore dell'applicazione, nonché da quanto lo sviluppatore consideri fondamentale la sua capacità di accedere. Nella migliore delle ipotesi, l'applicazione tenterà di scrivere o eventualmente creare e quindi scrivere in un file di registro in una destinazione all'interno /var/loge non riuscirà a farlo perché è eseguita da un utente che non ha i privilegi in cui scrivere quella parte del filesystem.

Quindi la risposta breve è no, non eliminare tutto /var/log: interrompe gli utenti con sufficienti privilegi per fare tali cose con le applicazioni che girano sul loro sistema e causerà rumore, errori silenziosi e qualche rottura totale.

L'azione appropriata da eseguire è impostare logrotatecon i file di configurazione appropriati. In genere la rotazione verrà associata a un processo cron. La rotazione può essere basata sull'intervallo, sulla base delle dimensioni o su entrambi. È anche possibile impostare regole che evitino la rotazione in base all'intervallo se il file di registro è ancora vuoto alla scadenza dell'intervallo. La rotazione può includere l'invio di file di registro, la compressione, l'eliminazione, la distruzione e così via.

L'utente medio non dovrebbe essere troppo preoccupato per la rotazione del registro. Gli sviluppatori probabilmente vorrebbero assicurarsi che i registri che usano abbiano stabilito regole di rotazione. In effetti, è probabilmente una buona educazione da parte degli sviluppatori impostare la rotazione dei registri al momento dell'installazione per tutti i registri specifici del software che il software creerà e scriverà.


1

Ho implementato un semplice pulitore qui:

https://github.com/Lin-Buo-Ren/Coward-Unix-Log-Cleaner

Semplicemente:

  • Elimina i nomi dei file con i seguenti modelli di nome file logrotati in /var/log
    • ^.*/.+\.[[:digit:]]+(\.[[:alpha:]]+)?$
    • ^.*/.+\.old$ (Case-insensitive)
  • Tronca / svuota i file con nomi di file con i seguenti modelli di file di registro sotto /var/log
    • ^.*/.+\.log$ (Case-insensitive)

-2
function goodbyelogs {
find /var/log -type f
}

for i in return $(goodbyelogs);
do sudo cat /dev/null > $i;
echo "Log $i has been cleared";
done

crea uno script eseguibile e prova a eseguire come root se sudo non funziona per te

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.