4

リモートサーバーには、次のようなスクリプト test.sh があります。

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

ローカルから「fab runtest」を実行して、リモートの test.sh を呼び出します。

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

「I'm here!」という出力は得られますが、リモート サーバーでスリープ プロセスが見つかりません。私は何を取りこぼしたか?

ありがとう!

4

3 に答える 3

6

リモート マシンのスクリプト内で nohup を実行することは可能ですか?

ここで答えとFabric FAQを確認しました。また、ファブリックからヒントを得て、apache2 を開始するように見えますが、開始しないので、それらを組み合わせるとうまくいきます。

変更せずに保持し、関連するシェル リダイレクトtest.shを追加できます。pty=False

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

少なくとも、それは私にとってはうまくいきます。

于 2013-05-28T04:44:36.423 に答える
3

ファブリック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 に答える