4

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

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

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

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

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

谢谢!

4

3 回答 3

6

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

我在这里检查了答案和Fabric FAQ,还得到了来自fabric 的提示似乎启动了 apache2 但没有,它对我来说可以将它们组合在一起

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

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

至少,它对我有用。

于 2013-05-28T04:44:36.423 回答
3

根据Fabric FAQ,您无法再有效地执行此操作。相反,您应该使用 tmux、screen、dtach 甚至更好地使用python 守护程序包

import daemon

from spam import do_main_program

with daemon.DaemonContext():
    do_main_program()
于 2011-09-12T17:20:50.270 回答
2

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

例如,run('nohup xxxx/test.sh')作品。

于 2012-08-15T01:25:26.943 回答