Pregunta Comando de shell para monitorear los cambios en un archivo - ¿Cómo se llama de nuevo?


Sé que había un comando en Unix que podía usar para monitorear un archivo y ver los cambios que se escriben en él. Esto fue bastante útil especialmente para revisar archivos de registro.

¿Sabes cómo se llama?


139
2018-04-30 21:00


origen




Respuestas:


Quieres decir

tail -f logfile.log

?

(Página del hombre para la cola)


188
2018-04-30 21:01



Sí, es tiempo real. - Adam Gibbins
Nota al margen: Si su distribución proporciona el comando tailf, use eso con preferencia a tail -f. tailf es más eficiente porque no necesita acceder al archivo visto si no se está escribiendo (los accesos de sondeo son molestos si montó el sistema de archivos con una actualización de tiempo). - Mihai Limbăşan
A super usuario encontré una respuesta recomendando cola -F en lugar de -F , también - Rafa
tail -F seguirá los nombres de archivo en lugar de los objetos de archivo, lo que es especialmente útil en caso de rotación de archivos de registro. - Amir Ali Akbari
Actualización, unos años más tarde: tailf ahora está en desuso y tail -f es seguro. (Confirme esto en su sistema con man tailf.) Ver documentación: man7.org/linux/man-pages/man1/tailf.1.html - exp1orer


Probablemente quisiste decir cola, según la respuesta de Jon Skeet.

Otra útil es reloj; le permite ejecutar un comando periódicamente y ver la pantalla completa de salida. Por ejemplo:

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

Se ejecutará el comando ls -l /var/adm/messages cada 10 segundos, y resalte la diferencia en la salida entre ejecuciones posteriores. (Útil para ver qué tan rápido está creciendo un archivo de registro, por ejemplo).


114
2018-04-30 21:07





Prefiero usar less +FG1 terminado tail -f porque me veo en la necesidad de buscar un archivo de registro para un ID o error específico. Si necesito buscar algo, escribo ^C dejar de seguir el archivo y ? para empezar a buscar hacia atrás.

Las uniones de teclas son más o menos las mismas que en vi. Cualquier comando se puede inicializar en el arranque usando el + opción:

+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.

Para registros realmente largos, me parece conveniente usar el -n Opción que desactiva la numeración de líneas. De la página del manual:

-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. Hat-tip para rgmarcha Por señalar esto en los comentarios.


33
2018-04-30 23:44



Recuerde establecer un alias con las opciones deseadas, para que no tenga que escribirlas todas las veces. - Michael Hampton♦
En realidad, en general, en la mayoría de los casos, se prefieren las funciones de shell en lugar de los alias. - tripleee


inotifywait desde inotificar-herramientas es útil si desea ejecutar un comando cada vez que cambia un archivo (o cualquier archivo en un directorio). Por ejemplo:

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

27
2018-06-02 12:13





La cola es genial ... menos también se puede usar comenzar menos en el archivo, es decir, menos myfile luego presionar F. Esto tiene menos efecto como cola.


19
2018-04-30 21:04



menos + F myfile lo hará también - rgmarcha


Estoy editando un archivo LaTeX y quería monitorearlo también para detectar cambios en algún punto intermedio. Saqué el siguiente pequeño script de shell que me resultó útil. Espero que también sea útil para alguien más.

#!/bin/bash
FILE="$1"
CMD="$2"
LAST=`ls -l "$FILE"`
while true; do
  sleep 1
  NEW=`ls -l "$FILE"`
  if [ "$NEW" != "$LAST" ]; then
    "$CMD" "$FILE"
    LAST="$NEW"
  fi
done

Guardalo como watch.sh y hacer chmod u+x watch.sh. Luego lo ejecuto de la siguiente manera:

./watch.sh file.tex pdflatex

Si desea que el comando solo se ejecute si se realiza una modificación real, puede usar `md5sum "$FILE"` en lugar de `ls -l "$FILE"`.


12
2017-10-10 09:32



para ver directorios y sus contenidos en lugar de un solo archivo: NEW=`tree -sDct . -I 'ignore_pattern|another_pattern'` - Andy


puedes usar el cola  comandar es muy fácil

tailf logfile.log

7
2017-10-15 13:26





También puede usar inotifywatch / inotifywait que enganche en los núcleos inotify subsistema. De esta manera, también puedes ver cosas como "abrir", "cerrar" o "acceder".

Pero si simplemente desea obtener líneas anexas a la salida estándar, estoy de acuerdo con la cola.


5
2018-04-30 22:40





Tail es la herramienta estándar, tradicional y disponible en todas partes de Unix. Una herramienta un poco más sofisticada es multitail que puede monitorear varios archivos simultáneamente y hace resaltado de sintaxis.


2
2018-04-30 22:58





Si quiero poder buscar alrededor del archivo además de solo seguirlo, uso menos con el comando "F".

Cuando use tail, tenga en cuenta que se necesitan argumentos adicionales si el archivo se puede rodar o reemplazar por edición (modo predeterminado para vim's: w).

tail -f hará que tail almacene el descriptor de archivo y lo siga. Si el archivo es reemplazado, el descriptor será cambiado. La ventaja de seguir el descriptor de archivo es que si se cambia el nombre del archivo, todavía lo seguirá.

tail --follow = hará un seguimiento de la cola del archivo nombrado volviendo a abrirlo periódicamente para ver si ha sido reemplazado.

--retry es otra opción útil si desea seguir un archivo de registro pero el archivo aún no se ha creado.

tail -F es un acceso directo para --follow = --retry.


2
2018-05-27 15:47