Estou chamando o seguinte comando via bash, mas ele não está criando nenhuma sessão de tela:
screen -d -m time python3 myscript.py ; sleep 1
quando faço screen -r
isso diz que não há tela para retomar. No entanto, quando tento:
screen -d -m time python3; sleep 1
Então, ao fazer screen -r
isso, mostra o console Py.
O que estou fazendo de errado?
Responder1
screen -d -m time python3 myscript.py
é executado python3 myscript.py
dentro de uma sessão de tela e depois sai. Se você não vir essa sessão de tela posteriormente, é porque o script já foi encerrado.
Parece que você esperava myscript.py
correr por mais tempo. Algo deve ter dado errado. Redirecione a saída (especialmente erros) para um arquivo para ver o que está acontecendo. Ou mantenha a sessão executando outro programa.
screen -d -m time sh -c 'python3 myscript.py; echo $?; sleep 999999999'
Se o script não funcionar quando você o executar diretamente na tela, mas funcionar se você executá-lo em um shell interativo, é muito provável que isso indique duas coisas:
myscript.py
depende de alguma configuração, provavelmente uma variável de ambiente. Não é independente.- Você está definindo essa configuração no lugar errado. Você provavelmente está definindo uma variável de ambiente em
.bashrc
, que só é lida por shells interativos. Em vez disso, defina variáveis de ambiente.profile
; este arquivo é lido quando você faz login.