Estoy ejecutando un servidor y el registro de este servidor se registra en la terminal, no en ningún archivo. Me gustaría usar menos para ver este registro.
node server.js | less
Cuando solo quiero ver el registro, utilizo presionar Shift+ Fpara llegar al final del archivo y seguir viendo registros. Cuando quiero detenerlo, uso CTRL+ C.
Desafortunadamente, esto también detiene el servidor. Solo quiero dejar de ver el final del registro sin detener el servidor.
¿Como hacer esto?
command-line
pipe
less
Ajay Kumar
fuente
fuente
less
y volver a su indicador de shell con elnode
servidor ejecutándose en segundo plano, o simplemente desealess
volver al modo normal que no sigue, donde puede desplazarse por el registro en lugar de mirar las últimas líneas?Respuestas:
No puedo encontrar ninguna forma de salir del
F
modoless
, por lo que tendrá que usar una solución alternativa. Por ejemplo, guarde la salida en un archivo tmp y luego mire ese archivo tmp en su lugar:El
&
hace que elnode.js
comando ejecutar en segundo plano. Esto significa queless tmpfile
comenzará de inmediato y rastreará el archivo tmp.Una vez dentro
less
, puede presionar Fpara ingresar al modo de seguimiento, pero ahora Ctrl+ Cno matará al servidor, solo detendrá el seguimiento. Ahora puedes desplazarte como quieras y presionar Fpara reanudar el seguimiento.fuente
Parece que normalmente no se supone que salgas del modo "Reenviar para siempre", que es cómo el manual
man less
nombra el modo que ingresas al presionar Shift+ F.Sin embargo, encontré un pequeño truco sucio de cómo puedes volver a la normalidad de todos modos. Sin embargo, congelará brevemente el comando, por lo que no estoy seguro de si sería adecuado para su servidor, que probablemente debería ejecutarse ininterrumpidamente.
De todos modos, aquí está el truco:
Supongo que ha comenzado
node server.js | less
y presionado Shift+ Fpara ingresar al modo "Reenviar para siempre". Ahoraless
ya no reacciona a ninguna pulsación de tecla.En este estado, puede presionar Ctrl+ Cpara eliminar el proceso del servidor y luego puede salir
less
presionando Q(lo que sin embargo, por alguna razón, dejará el comando como proceso detenido en su lista de trabajos; debe ejecutarlofg
para continuarlo y dejarlo completamente terminar después), pero esto no es lo que queremos.En su lugar, también puede presionar Ctrl+ Zpara detener ("congelar") el comando y regresar a su indicador de shell. Ahora escriba rápidamente el comando shell
fg
( " f mineral g ronda") para permitir que el comando siga funcionando en primer plano. Tenga en cuenta que sunode
proceso de servidor también está en pausa durante este corto tiempo, debe considerar si esto es aceptable o no.Así que ahora se
less
está ejecutando en primer plano de nuevo como antes, ¿verdad? Sí, pero mágicamente ya no está en modo "Reenviar para siempre". Puede usar, por ejemplo, las teclas de flecha nuevamente para desplazarse hacia arriba y hacia abajo.Desafortunadamente,
less
parece haber dejado de actualizar su búfer por completo, solo puede desplazarse hacia abajo hasta la línea en la que congeló el comando anteriormente, no más. Sinnode
embargo, el servidor todavía se está ejecutando y produciendo resultados, solo tenemosless
que actualizar nuevamente.La forma más fácil de hacerlo es simplemente abrir
less
'pantalla de ayuda y cerrarla nuevamente, presionando las teclas Hy Qsecuencialmente. Ahora todo parece estar funcionando bien nuevamente.Sin embargo, la solución más limpia probablemente sea seguir la respuesta de terdon y redirigir la salida a un archivo temporal,
less
para monitorear el archivo.fuente
%
lugar defg
; Me resulta más fácil / rápido escribir. También parece queF
(shift-f) todavía funciona incluso sin hacer elhq
truco. ¡Agradable! Ahora, cuando sigo los registros, puedoctrl-z
%
Enter
, hacer lo menos posible, ¡y luego volver a seguir presionandoF
!less
el seguimiento de característica en múltiples terminales al mismo tiempo.TSTP
señal interrumpe la llamada al sistema de lectura que estaba esperando que llegaran nuevos datos;less
recibe 0 bytes y concluye que la salida ha finalizado. Para evitar pausar el servidor, abra una nueva ventana de terminal; ejecutarps
e identificar el id delless
proceso; luego escribekill -TSTP <PID>; kill -CONT <PID>
. De esta manera, las señales deben enviarse de forma consecutiva, sin demora mientras está escribiendo.kill
, puedes enviar SIGINT en su lugar. Entonces no necesitarás enviarCONT
, yless
solo te está esperando.Como dice tu pregunta:
Supongo que no desea utilizar un archivo de registro (temporal), tal vez su registro es enorme o por cualquier razón que tenga.
Pipa con nombre,
fifo
archivo.Lo que se me ocurrió es usar un archivo
named pipe file
también conocidofifo
, este archivo solo se usará para canalizar sus registros a menos, y no se guardará nada en él.Primero crea un
fifo file
:Ejecute su servidor y redirija los registros a este archivo:
Use less para leer sus registros (-f fuerza menos para leer este archivo especial):
Ahora puede usar shift+ Fpara seguir y CTRL+ Cpara detener el seguimiento, pero el servidor aún se está ejecutando, puede seguir la salida nuevamente con shift+ F.
Plan de copia de seguridad : si detuvo su servidor, simplemente coloque su comando (
node server.js > mylog &
) en un archivo, por ejemplo:,server.sh
luego, en lugar de ejecutarnode server.js > mylog &
run:bash server.sh > mylog &
y luego ejecute elless -f mylog
.fuente
logrotate
.