Você deve fazer o contrário, executar script
dentro de screen
:
screen -dm bash -c 'script -c "python test.py" output.txt'
Eu tenho um script em Python test.py
que contém apenas: print('hi')
. Desejo executá-lo em screen
para que a saída do screen
seja salva por script
.
Eu uso o seguinte comando para executar test.py
em screen
, funciona bem:
screen -dm bash -c 'python test.py'
No entanto, ainda não consegui encontrar uma maneira de usar script
para salvar a saída de screen
. Como posso fazer isso?
Eu tentei sem sucesso:
script -c "screen -dm bash -c 'python test.py'" output.txt
: o arquivo de saída output.txt não contém hi
, mas apenas:
Script started on Fri 26 Aug 2016 01:04:59 PM EDT
Script done on Fri 26 Aug 2016 01:04:59 PM EDT
Eu uso o Ubuntu 14.04.4 LTS x64.
Documentação:
link :
-d -m: Start screen in detached mode. This creates a new session but doesn't attach to it. This is useful for system startup scripts.
link :
Página man do script-c string: If the -c option is present, then commands are read from string. If there are arguments after the string, they are assigned to the positional parameters, starting with $0.
:
-c, --command run command rather than interactive shell
Você pode usar o sinalizador -L
para criar um arquivo screenlog.0
automático
por exemplo
$ screen -dm -L sh -c 'echo hello'
$ cat screenlog.0
hello
Se você tiver uma sessão de longa duração que não está sendo registrada, poderá ativar o registro posteriormente
por exemplo
$ screen -dm -S test sh -c 'while [ 1 ]; do date; sleep 1; done'
Agora podemos ativar o registro
$ screen -S test -p 0 -X log
Aguarde algum tempo, porque o log é escrito em blocos e ...
$ cat screenlog.0
Fri Aug 26 13:25:49 EDT 2016
Fri Aug 26 13:25:50 EDT 2016
Fri Aug 26 13:25:51 EDT 2016
Fri Aug 26 13:25:52 EDT 2016
Fri Aug 26 13:25:53 EDT 2016
Fri Aug 26 13:25:54 EDT 2016
Fri Aug 26 13:25:55 EDT 2016
Fri Aug 26 13:25:56 EDT 2016
Fri Aug 26 13:25:57 EDT 2016
Fri Aug 26 13:25:58 EDT 2016
Outra maneira de fazer isso é anexar a tela primeiro:
screen -r <pid or name>
e depois:
Ctrl + A , H
Ele iniciará o login em screenlog.0
Tags gnu-screen logs