
Quiero ver un archivo que se sobrescribe cada 5 minutos con less
. ¿Cómo puedo less
seguir el nuevo descriptor de archivo en lugar de mantener mostrado el anterior? watch "cat file"
no lo hará porque el archivo es demasiado largo para caber en una ventana de terminal.
Respuesta1
Puede obtener este efecto emitiendo el F
comando ( Shift+F
) mientras visualiza el archivo en formato less
. Para dejar de seguir y volver a buscar, presioneCtrl+C
Dado que su archivo solo cambia cada 5 minutos, también puede usar tail -f
y especificar un tiempo de suspensión más largo -s
(el valor predeterminado es 1 segundo). Por ejemplo,
tail -f -s 60 myfile
comprueba myfile
la salida cada 60 segundos.
EDITAR: Debido a una pregunta engañosa, la respuesta anterior no fue satisfactoria. Sigue el segundo intento:
Para volver a abrir el mismo archivo less
cada 5 minutos, intente esto:
while true; do ( sh -c 'sleep 600 && kill $PPID' & less myfile ); done
Esto generará un subshell que pone en segundo plano otro proceso de shell al que se le indica que finalice su proceso principal después de 5 minutos. Luego abre el archivo con less
. Cuando el comando de shell en segundo plano mata el subshell padre, mata a todos sus hijos, incluido el comando "menos". Luego, el bucle inicia el proceso nuevamente.
La única manera fácil que conozco de eliminar esto es eliminar el terminal en el que se encuentra tu shell original. Si eso es inaceptable, puedes usar el truco "killfile":
touch killfile
while [ -f killfile]; do stuff; done
Para dejar de hacerlo stuff
, rm
el killfile en otro shell.
Respuesta2
Puedes hacer algo similar en vim
.
Inicie una sesión de servidor de vim
:
vim -R --servername refresh_session
Luego, en otra consola, supervise el archivo en busca de actualizaciones y dígale a la sesión de vim que vuelva a cargar el archivo tan pronto como se actualice:
inotifywait -e close_write -m your_log_file | while read filename events; do
vim --servername refresh_session --remote $filename
done
Algunas trampas.
- Por supuesto, esto no funcionará si
vim
no está compilado con laclientserver
función. inoifywait
dejará de funcionar cuando se elimine el archivo. Así que espero que su archivo se sobrescriba. Por supuesto, también es posible solucionar este problema.
Y si desea tener una less
experiencia más parecida, puede usar las less
macros para obtener sus less
combinaciones de teclas vim
.
/usr/share/vim/vim73/macros/less.sh --servername refresh_session
Respuesta3
Puedes probar este comando: tail -f file
Respuesta4
Encontré un programa antiguo, pero muy bueno, "menos" (un "buscapersonas"). Tiene un comando "R" que actualiza el archivo.
Se llama"lv", Puedes instalarlo en Ubuntu usando:
sudo apt install lv
Sin embargo, parece no tener función de recarga automática.