开发者

fabric can NOT call the remote script with nohup

开发者 https://www.devze.com 2023-02-20 16:26 出处:网络
In remote server, I have a script test.sh like: #!/bin/bash echo \"I\'m here!\" nohup sleep 100& From local, I run \'fab runtest\' to call the remote test.sh.

In remote server, I have a script test.sh like:

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

From local, I run 'fab runtest' to call the remote test.sh.

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

I can get the output "I'm here!", but I can Not find the sleep process in remote sever. What 开发者_如何学Cdid I miss?

Thanks!


It is possible to run the nohup inside the script in remote machine?

I checked the answer here and Fabric FAQ, also get the hints from fabric appears to start apache2 but doesn't and it works for me to combine them together

You can keep your test.sh without changes, and add pty=False with related shell redirection.

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

At least, it works for me.


According to the Fabric FAQ you can no longer effectively do this. Instead you should use tmux, screen, dtach or even better use the python daemon package:

import daemon

from spam import do_main_program

with daemon.DaemonContext():
    do_main_program()


We ran into this problem and found that you can use nohup in a command, but not in the script itself.

For example, run('nohup xxxx/test.sh') works.

0

精彩评论

暂无评论...
验证码 换一张
取 消