fabric不能用nohup调用远程脚本

时间:2011-03-29 08:38:17

标签: python fabric nohup

在远程服务器中,我有一个脚本test.sh,如:

#!/bin/bash
echo "I'm here!"
nohup sleep 100&

从本地开始,我运行'fab runtest'来调用远程test.sh。

def runtest():
    run('xxxx/test.sh')

我可以得到输出“我在这里!”,但我无法在远程服务器中找到睡眠过程。 我错过了什么?

谢谢!

3 个答案:

答案 0 :(得分:6)

可以在远程机器的脚本中运行nohup吗?

我在这里检查了答案并Fabric FAQ,也从fabric appears to start apache2 but doesn't获得了提示,它可以让我将它们组合在一起

您可以保持test.sh不做更改,并添加pty=False相关的shell重定向。

from fabric.api import *
def runtest():
    run("nohup /tmp/test.sh >& /dev/null < /dev/null &",pty=False)

至少,它对我有用。

答案 1 :(得分:3)

根据Fabric FAQ,您无法再有效地执行此操作。相反,你应该使用tmux,screen,dtach甚至更好地使用python daemon package

import daemon

from spam import do_main_program

with daemon.DaemonContext():
    do_main_program()

答案 2 :(得分:2)

我们遇到了这个问题,发现您可以在命令中使用nohup,但不能在脚本本身中使用。

例如,run('nohup xxxx/test.sh')有效。