Iniciar sesión de pantalla separada

8

Me gustaría comenzar la sesión separada de la pantalla, pero quiero evaluar un poco de bash. Parece que la pantalla solo admite un ejecutable y un binario. Quiero hacer algo de magia como:

screen -d -m script.sh 2>&1 | tee logfile.log

pero esto aparentemente no funciona. Citar no ayuda aquí. La única idea que tengo es crear un script de envoltura que haga esta redirección y luego llamarla directamente, como:

screen -d -m wrapper_script.sh

¿Alguna otra idea? Gracias.

lzap
fuente

Respuestas:

8

Podría hacer que la pantalla ejecute un shell bash, que a su vez ejecuta su script.

Acabo de probar esto:

screen -d -m bash -c 'vmstat 5 3 2>&1 | tee logfile.log'

que me dio esto:

kenny@t520:~$ cat logfile.log 
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  0      0 5864764 103072 884512    0    0    66    36 1236 1818 17  6 77  0
 0  0      0 5864252 103072 884512    0    0     0     0  311  574  1  1 98  0
 1  0      0 5861532 103080 884512    0    0     0     4 1244 2302  4  2 94  0

Entonces esto también debería funcionar:

screen -d -m bash -c 'script.sh 2>&1 | tee logfile.log'
Kenny Rasschaert
fuente
¡Oh, estaba intentando esto pero tenía un error tipográfico! Muchas gracias.
lzap
4

¿Has intentado especificar la -Lopción de pantalla para escribir en un registro?

También puede especificar el nombre del registro utilizando el archivo ~/.screenrc; aquí está el contenido mío como ejemplo:

defutf8 on
deflog on
logfile /home/me/convert.log
multiuser on
njahnke
fuente
¡Gracias, eso también debería hacerlo! Votación positiva, pero la respuesta de Kennys es más genérica. GRACIAS.
lzap