
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 screen
todas 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 screen
no 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 tail
en 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 screen
siempre puedes usar nohup
y 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 ESC
para salir del modo de desplazamiento hacia atrás/copiar.
De forma predeterminada, Screen sólo conserva el valor de 100 líneas. Poner undefscrollback
directiva en su .screenrc
para 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 tee
con el nombre de su registro como parámetro.