Eu escrevi um script que essencialmente faz duas coisas:
Tudo corre bem, a interface do usuário é iniciada e, em seguida, o programa é executado no servidor. Mas assim que fecho a interface do usuário, o processo remoto é morto.
Porções relevantes do script:
ui_pid = subprocess.check_output('/home/user/git/sim_ui.sh', shell=True)
command = 'ssh user@server "bash -c \'cd program_dir/ && echo \"running program >> log.out && ./program.sh >> log.out\'"'
print command
os.system(command)
sim_ui.sh :
nohup ui_binary args > ui_out.txt &
Eu também não consigo descobrir o que matou o processo no servidor, ou seja, o sinal que finalizou o processo e de onde ele se originou.
Editar:
Quando adiciono screen -dm
antes de bash -c
, funciona perfeitamente.