logging - Guarde la salida de "pantalla"(programa) en un archivo
screen buffer (8)
El comando ''script'' en Unix debería hacer el truco. Simplemente ejecútalo al comienzo de tu nueva consola y deberías estar bien.
Necesito guardar todo el resultado de la screen
en un archivo para verificar luego todo el contenido. La razón es que estoy volcando una memoria flash a través del puerto serie, usando la pantalla para interactuar con ella. Me gustaría guardarlo en un archivo para verificar la estructura de la memoria.
He intentado :
$: screen /dev/ttyUSB0 115200 >> foo.txt
$: screen /dev/ttyUSB0 115200 | tee foo.txt
y también intenté usar el buffer de la pantalla, pero no entiendo cómo usarlo.
hay una manera fácil?
El siguiente comando funciona para la versión de pantalla 4.06.02
screen -L -Logfile Log_file_name_of_your_choice command_to_be_executed
Desde la página del manual de la pantalla:
-Logfile file : By default logfile name is "screenlog.0".
You can set new logfile name with the "-Logfile" option.
Puede verificar la versión existente de la pantalla usando la versión de la pantalla . Puede descargar e instalar la última versión de pantalla desde https://www.gnu.org/software/screen/ .
Hay una opción de línea de comando para el registro. La salida se guarda en el archivo screenlog.n, donde n es un número de la pantalla. Desde las páginas man de la pantalla:
''-L'' Indica a la pantalla que active el registro de salida automático para las ventanas.
La respuesta seleccionada no funciona bastante bien con varias sesiones y no permite especificar un nombre de archivo de registro personalizado.
Para sesiones de pantalla múltiple, esta es mi fórmula:
1) crea un archivo de configuración para cada proceso:
logfile test.log
logfile flush 1
log on
logtstamp after 1
logtstamp string "[ %t: %Y-%m-%d %c:%s ]/012"
logtstamp on
Si desea hacerlo "sobre la marcha", puede cambiar el logfile
automáticamente. /012
significa "nueva línea", ya que al usar /n
se imprimirá en el archivo de registro: source .
2) Comience su comando con los indicadores "-c" y "-L":
screen -c ./test.conf -dmSL ''Test'' ./test.pl
Eso es. Verás "test.log" después de la primera descarga:
...
6 Something is happening...
[ test.pl: 2016-06-01 13:02:53 ]
7 Something else...
[ test.pl: 2016-06-01 13:02:54 ]
8 Nothing here
[ test.pl: 2016-06-01 13:02:55 ]
9 Something is happening...
[ test.pl: 2016-06-01 13:02:56 ]
10 Something else...
[ test.pl: 2016-06-01 13:02:57 ]
11 Nothing here
[ test.pl: 2016-06-01 13:02:58 ]
...
Encontré que "-L" aún se requiere incluso cuando "iniciar sesión" está en el archivo de configuración.
No pude encontrar una lista de las variables de formato de tiempo (como% m) utilizadas por la pantalla. Si tiene un enlace de esos formatos, publíquelo a continuación.
** EXTRA **
En caso de que quiera hacerlo "sobre la marcha", puede usar este script:
#!/bin/bash
if [[ $2 == "" ]]; then
echo "Usage: $0 name command";
exit 1;
fi
name=$1
command=$2
path="/var/log";
config="logfile ${path}/${name}.log
logfile flush 1
log on
logtstamp after 1
logtstamp string /"[ %t: %Y-%m-%d %c:%s ]/012/"
logtstamp on";
echo "$config" > /tmp/log.conf
screen -c /tmp/log.conf -dmSL ''$name'' $command
rm /tmp/log.conf
Para usarlo, guárdelo (screen.sh) y establezca + x permisos:
./screen.sh TEST ./test.pl
... y ejecutará ./test.pl y creará un archivo de registro en /var/log/TEST.log
Lo siguiente puede ser útil (Probado en: Linux / Ubuntu 12.04):
cat /dev/ttyUSB0
Usando lo anterior, puede hacer todas las direcciones que necesite. Por ejemplo, para volcar la salida a su consola mientras guarda en su archivo, haría:
cat /dev/ttyUSB0 | tee console.log
También puede usar Control-a + H para guardar registros en el archivo screenlog.n. Uno más Control-a + H para apagar.
Ca H: comienza / finaliza el registro de la ventana actual en el archivo "screenlog.n".
para mac terminal:
script -a -t 0 out.txt screen /dev/ttyUSB0 115200
detalles
- aplicación de
script
integrada para "hacer un texto a máquina de la sesión de la terminal" -
-a
añadir al archivo de salida -
-t 0
tiempo entre la escritura y el archivo de salida es de 0 segundos, por lo que out.txt se actualiza para cada nuevo char -
out.txt
es solo el nombre del archivo de salida -
screen /dev/ttyUSB0 115200
- comando de la pregunta para conectar al dispositivo externo
luego puede usar la cola para ver que el archivo se está actualizando
cola -100 fuera.txt
Ctrl + A y luego Shift + H funciona para mí. Puede ver el archivo screenlog.0
mientras el programa todavía se está ejecutando.