Desejo usar a tela GNU para executar um único comando no modo desanexado no console serial e salvar sua saída no arquivo de log no host em que a tela está sendo executada. Basicamente, equivalente não interativo das seguintes ações:
screen /dev/ttyUSB0 115200 # connect to serial console "/dev/ttyUSB0" using speed "115200"
ctrl+a H # start logging
some command
ctrl+a k y # quit
Eu sei como executar um único comando no modo desanexado no shell atual:
screen -d -m -L some command
# output is saved to screenlog.0
Mas não entendo como fazer a mesma coisa ao mesmo tempo em que me conecto a um console serial.
Não posso testar isso corretamente em uma porta serial, mas acho que isso pode funcionar:
Minha versão de
screen
aceita um argumento para-L
, o nome do arquivo de log. Aparentemente, nem todas as versões o fazem. Outra maneira de definir o nome do arquivo de log seria com (se isso funcionar). armazena a saída no log por um tempo antes de gravar. Por padrão, o tempo limite é de 10 segundos, mas veja como alterar isso .screen -S serial -X logfile filename
screen
logfile flush NN
-X
envia um comando para um em execuçãoscreen
estuff
, bem, "enche" a string fornecida como entrada na janela atual .