11

切り離された画面セッションを使用して、リモート ホストでスクリプトを実行しようとしています。Fabric が提供する例を試してみましたが、残念ながら動作しませんでした。

from fabric.api import run

def yes():
    run('screen -d -m "yes"')

ローカル マシンで実行fab yesすると、リモート ホストに正しく接続され、コマンドが実行されたと表示されますが、リモート ホストでは何も実行されません。screen -d -m "yes"どちらのマシンでも試してみると、期待どおりに動作します。

誰かが私が間違っていることを指摘できれば、とても感謝しています。また、補足として、コマンドの yes が引用符で囲まれているのはなぜですか? 引用符なしで機能しますか?ありがとう!

4

3 に答える 3

17

run('screen -d -m yes; sleep 1')動作します。

ただし、ファブリックまたはスクリーンがこの動作の原因であるかどうかはわかりません.

于 2013-01-22T13:57:32.407 に答える
4

AVBの回答は完璧ですが、私のような人に役立つかもしれない小さなヒントを追加します. 複数のコマンドを実行する場合は、それらを実行可能ファイルに入れます。

これは機能しません:

run('screen -d -m "./ENV/bin/activate; python run.py; sleep 1"')

したがって、run.sh ファイルを作成します。

#!/bin/bash
source ENV/bin/activate
python run.py

そして、それを次のように使用しますrun('screen -d -m ./run.sh; sleep 1')

于 2013-07-25T16:40:57.127 に答える