tail: lettura di un intero file, quindi seguito


35

Vorrei un tail -ftipo di comportamento che legge l'intero file e continua a seguirlo mentre è scritto.


SOLUZIONE

Sulla base della risposta che ho accettato, funziona: tail -f -n +1 {filename}

Perché funziona: l' -fopzione continua a "seguire" il file e genera nuove righe man mano che vengono scritte nel file. I -n +1istruisce tailper avviare la lettura del file dalla prima linea. L'utilizzo -n -10inizierebbe con le ultime dieci righe del file.


2
Questo è un commento, non una domanda. E tail non lo fa già: tail -f -n 10000000000000000000probabilmente mostrerà tutte le linee, no? (forse il 10000000000000000000 è un po 'troppo: =))
— Rinzwind

Credo che more fileNamefarebbe proprio questo
— ryekayo l'

1
no..more non aggiungerà ulteriori righe aggiunte al file dopo che ne sono state avviate altre.
— Rinzwind,

Presumibilmente tail -f -n 100...comporterà la pre-lettura del file per determinare il numero di righe, a meno che non sia abbastanza intelligente da elaborare un limite superiore per il conteggio delle righe in base alla dimensione del file.
— mwfearnley,

Risposte:


51

Uso

tail -f -n +1

L'utilizzo man tailti fornirà maggiori dettagli, di seguito il relativo estratto.

<snip>Numbers having a leading plus (`+') sign are relative to the
beginning of the input, for example, ``-n +2'' starts the display at the
second line of the input.</snip>

-f      The -f option causes tail to not stop when end of file is
        reached, but rather to wait for additional data to be appended to
        the input.  The -f option is ignored if the standard input is a
        pipe, but not if it is a FIFO.

-n number
        The location is number lines.

3
Potresti aggiungere questi "maggiori dettagli" alla tua risposta? Spiega perché e come funziona la tua soluzione. (Ho trovato la tua risposta nella coda di messaggi di bassa qualità.)
— kraxor,

1
@kraxor Puoi trovare i "maggiori dettagli" eseguendo man tail(e leggendolo) come dice la risposta, oppure fai una ricerca online per "manpage tail" e leggine uno. tailfunziona iniziando da una posizione in un file, legge (e visualizza) fino alla fine, quindi monitora l'aumento delle dimensioni del file. Quando la dimensione del file aumenta, taillegge e visualizza dalla precedente posizione EOF alla nuova fine del file.
— Waltinator,

2
@waltinator Non me l'ho proprio chiesto. Gli ho chiesto di aggiungere ulteriori dettagli perché il suo post è stato contrassegnato come di bassa qualità, ma non volevo votare per eliminare perché ha dato una risposta corretta.
— kraxor,

1
Questo e 'esattamente quello che stavo cercando. Ho usato il tail -50 {filename}precedente, ma non ho avuto successo combinando i due.
— Sonny,


3

Prova questo:

watch tail {filename}

dov'è {filename}il file che vuoi tenere d'occhio. Ciò monitorerà continuamente il comando per le modifiche e invierà le modifiche a stdout. È abbastanza utile.


Questo sembra uno strumento molto carino. Anche se non ha dato i risultati che stavo cercando, lo terrò sicuramente a mente. Combinarlo con la risposta accettata è piuttosto carino:watch tail -n +1 {filename}
— Sonny,

Sì, sembra che tu l'abbia perfezionato!
— Rick Chatham,

watchè davvero uno strumento utile, ma per guardare la modifica dell'output di un comando, ma per guardare la fine di un file che viene aggiunto è molto meglio usare tail -f. --- watch tail {filename}riaprirà e rileggerà la fine del file ogni due secondi. D'altra parte controlla tail -fla crescita del file e quando viene rilevato legge immediatamente solo la parte allegata. tailf -fè molto più efficiente e la reazione è molto più veloce. Inoltre mostrerà continuamente il contenuto del file dal punto in cui hai iniziato. --- watchsovrascrive il suo output ogni due secondi.
— pabouk,
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.