使用fabric启动远程分离进程

时间:2013-04-29 17:01:46

标签: python fabric

我想在python中使用fabric远程运行程序

如果我在机器A上运行程序:

with (settings(host_string = machine_B_ip, user = 'ubuntu', key_filename = 'somepemfile.pem')):
    run('myprog')

运行正常但是当机器A从机器B断开连接时,过程在B上停止。 我用'nohup'来解决这个问题

但真正的问题是,机器A卡住了,等待机器B

尝试:

run('myprog &')

只是不起作用,程序不会远程运行(如http://docs.fabfile.org/en/1.3.4/faq.html#why-can-t-i-run-programs-in-the-background-with-it-makes-fabric-hang中所示)

尝试:

run('myprog >& /dev/null < /dev/null &') # fails
run('myprog >& /dev/null < /dev/null') 
run('nohup myprog >& /dev/null < /dev/null')  # gets stuck

无济于事。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

你试过吗

  

run('nohup myprog&gt;&amp; / dev / null&lt; / dev / null&amp;')

最后是&

答案 1 :(得分:0)

我认为这就是答案。

后台进程可能仍会阻止调用shell退出,直到它们停止运行

https://fabric.readthedocs.org/en/1.5/faq.html