Deje el comando remoto ejecutándose almacenando la salida

Deje el comando remoto ejecutándose almacenando la salida

Guión;

He conectado SSH a una máquina, abrí una nueva sesión de pantalla y lancé un script.

Sin embargo, algunos días después vuelvo por SSH a esa máquina, vuelvo a conectar la sesión de pantalla y miro el resultado que se ha generado; No puedo retroceder a través de la salida.

Por lo que puedo ver, la pantalla almacena un "valor de pantalla" de salida estándar. Si mi script ha generado 100 líneas de salida en 48 horas, no puedo verlo todo, solo las últimas 40 líneas impares aproximadamente. ¿Hay alguna manera de almacenar screentodas las salidas estándar del script que dejo en ejecución, de modo que pueda volver a adjuntar la pantalla y avanzar/rePág a través de ella como si fuera un script ejecutándose en mi máquina local?

¿Quizás screenno sea la forma más óptima de hacer esto? ¿Existe un método mejor para dejar los scripts ejecutándose en máquinas remotas después de cerrar la sesión y poder volver a adjuntarlos a ese proceso en una fecha posterior y ver todos los resultados?

Respuesta1

Simplemente puede almacenar la salida en un archivo.

my_command > mylogfile

Si desea ver qué sucede mientras se ejecuta el comando, puede usar tailen una segunda pantalla:

tail -f mylogfile

No sólo podrás ver el resultado completo sino también procesarlo (comparar, buscar, ...)

Editarsi no quieres usar screensiempre puedes usar nohupy cerrar la sesión

nohup my_command > mylogfile &

Respuesta2

También puede activar el registro de salida con el parámetro -L cuando inicia la pantalla, a través de:

screen -L -S <screen_name>

Esto creará un archivo de registro llamado screenlog.0 en el directorio en el que inició la pantalla con el comando anterior.

Para ver screenlog.0 use cat (no vi)Así que ref..

cat screenlog.0

Respuesta3

La pantalla mantiene un registro de las líneas de salida pasadas; se llama "búfer del historial de desplazamiento" en la documentación de la pantalla.

Para navegar a través del desplazamiento hacia atrás, presione C-a ESC(copy). Puede utilizar las teclas de flecha y PgUp/ PgDnpara navegar, así comootras llavespara buscar y copiar texto. Presione ESCpara salir del modo de desplazamiento hacia atrás/copiar.

De forma predeterminada, Screen sólo conserva el valor de 100 líneas. Poner undefscrollbackdirectiva en su .screenrcpara cambiar esta cifra.

Si desea un registro completo de su secuencia de comandos, guárdelo en un archivo. Ejecútelo dentro de Screen para poder conectarse nuevamente al shell principal y ver fácilmente si el script aún se está ejecutando, suspenderlo y reiniciarlo, etc. O bifurcarlo.connohup. Para monitorear el archivo de registro mientras crece, use tail -f.

Respuesta4

Si desea ver el resultado en la pantalla y también registrarlo, simplemente canalícelo teecon el nombre de su registro como parámetro.

información relacionada