Esiste un equivalente `tail -f` per quando viene sovrascritto un file (anziché allegato)?

Come monitorare continuamente un file che viene continuamente sovrascritto? In particolare, il file contiene una singola row di text che un process di background viene ripetutamente ripreso e riprinting.

Speravo che la tail -F funzionasse, ma non lo fa.

  • È ansible filtrare l'output della coda?
  • In tail -f, come faccio a filtrare le cose che hanno determinate parole chiave?
  • Tail -f su nuovi file
  • coda sendmail - visualizza il numero di messaggi per dominio
  • Il server di coda registra in XMPP?
  • "Guardando" un registro su FreeBSD vs Linux
  • Aggiornamento : speravo che questo non sarebbe pertinente, ma sto eseguendo Mac OS X 10.5.8.

  • coda sendmail - visualizza il numero di messaggi per dominio
  • Windows conveniente equivalente al file di log-tailf?
  • In tail -f, come faccio a filtrare le cose che hanno determinate parole chiave?
  • Come visualizzare determinate righe da un file di text in Linux?
  • "Guardando" un registro su FreeBSD vs Linux
  • Aggiunta di comportmento coda in cui entra aggiunge linee vuote a less
  • 5 Solutions collect form web for “Esiste un equivalente `tail -f` per quando viene sovrascritto un file (anziché allegato)?”

    È ansible utilizzare l'orologio per ripetere l'esecuzione di un command, quindi nel tuo caso

     watch -n 1 cat filename 

    Ci sono modi migliori per farlo, ma functionrà

      while true ; do echo -n "`date +%s:` " >> file.log ; cat file >> file.log ; done 

    Il file.log file crescerà rapidamente …

    Se hai bisogno di più funzionalità, per controllare se il contenuto del file è uguale ai contenuti precedenti, puoi espanderlo in uno script. Basta commentare di seguito e ti aiuterò.

    Sui sisthemes BSD (e credo che la maggior parte degli altri sisthemes) tail -f riprenderà all'inizio del file se vede che il file è stato troncato (questo suona come esattamente il comportmento che si desidera).

    Sui sisthemes Linux la stessa cosa succede, ma alless sulla casella Debian che ho posizionato intorno alla coda ha un "intervallo di polling", quindi devi dire che non dormi tra i controlli del file ( tail -s 0 -f ... ) per far notare il troncamento, altrimenti cose accadono stranamente (se il file è la stessa dimensione o più piccola quando viene scritto non si ottiene alcuna output, se è più grande si ottiene tutto dopo il segnalino di count di byte-count della coda, ecc. Gioca con l'impenetrazione di coda per vedere come si comport)


    Come alternativa sia su sisthemes Linux che BSD, la coda ha un'opzione -F (che è come -f ma controlla se il file è stato ruotato – vale a dire il nome indica un diverso numero di inode). Ciò non ti aiuterà se il file viene troncato invece di unlink'd e sostituito però.

    watch povero dell'uomo:

     while true do clear cat file sleep 1 done 

    Cambiare il cat se il file è più lungo di uno schermato a qualcosa di simile:

     tail -n $((LINES - 4)) file 

    È ansible aggiungere condizioni per verificare la modifica del timestamp del file, ecc.

    È ansible utilizzare l' API FSEvents e un piccolo script per monitorare il file (o più precisamente la directory che contiene il file).

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.