GNU/Linux >> Linux Esercitazione >  >> Linux

Comando della shell per monitorare le modifiche in un file

Soluzione 1:

Vuoi dire

tail -f logfile.log

?

(Pagina man per tail)

Soluzione 2:

Probabilmente intendevi coda, come da risposta di Jon Skeet.

Un altro utile è guardare; ti consente di eseguire periodicamente un comando e vedere l'output a schermo intero. Ad esempio:

watch -n 10 -d ls -l /var/adm/messages

Eseguirà il comando ls -l /var/adm/messages ogni 10 secondi ed evidenziare la differenza nell'output tra le esecuzioni successive. (Utile per vedere quanto velocemente cresce un file di log, per esempio).

Soluzione 3:

inotifywait da inotify-tools è utile se si desidera eseguire un comando ogni volta che un file (o qualsiasi file in una directory) cambia. Ad esempio:

inotifywait -r -m -e modify /var/log | 
   while read path _ file; do 
       echo $path$file modified
   done

Soluzione 4:

Preferisco usare less +FG oltre tail -f perché mi ritrovo a dover cercare un file di registro per un errore o un ID specifico. Se devo cercare qualcosa, digito ^C per smettere di seguire il file e ? per iniziare la ricerca all'indietro.

Le combinazioni di tasti sono praticamente le stesse di vi . Qualsiasi comando può essere inizializzato all'avvio usando + opzione:

+cmd   Causes  the  specified  cmd  to be executed each time a new file is
       examined.  For example, +G causes less to  initially  display  each
       file starting at the end rather than the beginning.

Per log molto lunghi, trovo conveniente usare -n opzione che disattiva la numerazione delle righe. Dalla manpage:

-n or --line-numbers
          Suppresses line numbers.  The default (to use line numbers)  may
          cause  less  to run more slowly in some cases, especially with a
          very large input file.  Suppressing line  numbers  with  the  -n
          option  will  avoid this problem.  Using line numbers means: the
          line number will be displayed in the verbose prompt and in the =
          command,  and the v command will pass the current line number to
          the editor (see also  the  discussion  of  LESSEDIT  in  PROMPTS
          below).

1. Complimenti a rgmarcha per averlo segnalato nei commenti.

Soluzione 5:

Tail è fantastico ... less può anche essere usato inizia less sul file cioè less myfile quindi premi Maiusc +F . Questo ha meno funzione di coda.


Linux
  1. Quando usiamo il comando Mv, quali cambiamenti avvengono nell'HDD?

  2. File duplicato X volte nella shell dei comandi?

  3. Comando wc Linux

  4. Comando meno Linux

  5. Come eseguire un comando ogni volta che un file cambia?

Comando Stat in Linux

Comando sorgente in Linux

Come monitorare le modifiche ai file utilizzando fswatch in Linux

Come reindirizzare l'output del comando della shell

Shell dei comandi

Cos'è un file .sh?