GNU/Linux >> Linux Esercitazione >  >> Linux

Rimuove le prime N righe da un file di registro attivo

Penso che questo compito possa essere raggiunto con sed

sed -i '1,10d' myfile

eliminerebbe le righe da 1 a 10 dal file.

Penso che tutti dovrebbero almeno dare un'occhiata a queste battute sed 1.

Tieni presente che questo non funziona per i file di registro che vengono aggiunti attivamente da un'applicazione (come indicato nella domanda).

sed -i creerà un nuovo file e 'cancellerà' il file su cui si sta scrivendo. La maggior parte delle applicazioni continuerà a scrivere record di registro nel file di registro eliminato e continuerà a riempire lo spazio su disco. Il nuovo file di registro troncato non verrà aggiunto. Questo cesserà solo quando l'applicazione viene riavviata o viene altrimenti segnalato per chiudere e riaprire i suoi file di registro. A quel punto ci sarà un gap (record di log mancanti) nel nuovo file di log se c'è stata un'attività registrabile tra l'uso di sed e il riavvio dell'applicazione.

Un modo sicuro per farlo sarebbe arrestare l'applicazione, utilizzare sed per troncare il registro, quindi riavviare l'applicazione. Questo approccio può essere inaccettabile per alcuni servizi (ad esempio un server Web con throughput elevato e requisiti di continuità del servizio elevati)


No, i sistemi operativi come Linux, e i suoi filesystem, non prevedono la rimozione dei dati dall'inizio di un file. In altre parole, il punto iniziale di memorizzazione di un file è fisso.

La rimozione di righe dall'inizio di un file viene solitamente eseguita scrivendo i dati rimanenti in un nuovo file ed eliminando il vecchio. Se un programma ha il vecchio file aperto per la scrittura, l'eliminazione di quel file viene posticipata fino a quando l'applicazione non chiude il file.

Come hanno notato i commentatori, per i motivi indicati nella mia frase precedente, di solito è necessario coordinare la potatura del file di registro con i programmi che stanno scrivendo i registri. Il modo esatto in cui lo fai dipende dai programmi. Alcuni programmi chiuderanno e riapriranno i loro file di registro quando invii loro un segnale (ad es. HUP) e questo può essere utilizzato per impedire che i record di registro vengano scritti in un file di registro "eliminato", senza interrompere il servizio.

Sono disponibili molte utilità per gestire la dimensione dei file di registro, ad esempio logrotate

Alcuni programmi hanno le proprie utilità. Ad esempio, il server Web Apache include un'utilità di rotazionelog.


No. Una soluzione a questo problema generico di crescita dei file di registro è la rotazione dei registri. Ciò comporta lo spostamento regolare (notturno o settimanale, in genere) di un file di registro esistente in un altro nome di file e l'avvio da zero con un file di registro vuoto. Dopo un certo periodo i vecchi file di registro vengono gettati via.

Vedere:http://www-uxsup.csx.cam.ac.uk/~jw35/courses/apache/html/x1670.htm


Linux
  1. Come rimuovere le righe duplicate all'interno di un file di testo?

  2. Come rimuovere le righe vuote da un file (inclusi tabulazione e spazi)?

  3. Rimuovere in modo efficiente le prime due righe da un file di testo?

  4. Rimuovere le righe di intestazione extra dal file, ad eccezione della prima riga?

  5. Contare le righe in un file?

Come rimuovere la password da un file PDF in Linux

Come rimuovere le righe da un file usando il comando Sed

Come rimuovere (^M) caratteri da un file in Linux

Stampa un file, saltando le prime X righe, in Bash

Come rimuovere le linee che appaiono sul file B da un altro file A?

Rimuovi le righe pari o dispari da un file di testo