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