in

registro: guardar la salida de la pantalla (programa) en un archivo

apple touch icon@2

La respuesta seleccionada no funciona del todo bien con varias sesiones y no permite especificar un nombre de archivo de registro personalizado.

Para múltiples sesiones de pantalla, esta es mi fórmula:

  1. Cree 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 ]12"
    logtstamp on
    

    Si quiere hacerlo «sobre la marcha», puede cambiar logfile automáticamente.
    12 significa «nueva línea», como usar n lo imprimirá en el archivo de registro: fuente.

  2. Inicie su comando con las banderas «-c» y «-L»:

    screen -c ./test.conf -dmSL 'Test' ./test.pl
    

    Eso es todo. Verá «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 ]
    ...
    

Descubrí que todavía se requiere «-L» incluso cuando «iniciar sesión» está en el archivo de configuración.

No pude encontrar una lista de las variables de formato de hora (como% m) utilizadas por la pantalla. Si tiene un enlace de esos formatos, publíquelo a continuación.

Extra

En caso de que desee hacerlo «sobre la marcha», puede utilizar 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 ]12"
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 configure los permisos + x:

./screen.sh TEST ./test.pl

… y ejecutará ./test.pl y creará un archivo de registro en /var/log/TEST.log

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Ruby: clases y objetos

gfg 200x200 min

fgets () y gets () en lenguaje C