1

私は理解できないように見える非常に奇妙な問題を抱えています。

SSH ターミナル (パテ) 内で次の行を含む python スクリプトを実行すると、正常に動作します。しかし、crontab を介してスクリプトを実行した瞬間、またはnohup python myscript >/dev/null 2>&1&これらのコマンドを実行していないようです。

subprocess.call('rsync -avr /path/to/folder/. --include "delta.*" --exclude "*" -e "ssh -o StrictHostKeyChecking=no -i /path/to/key.pem" ec2-user@'+server+':/path/to/folder/', shell=True)
local('ssh -t -o StrictHostKeyChecking=no -i /path/to/key.pem ec2-user@'+server+' "sudo /usr/bin/indexer -c /path/to/sphinx.conf --merge main delta --rotate"')

基本的に、上記のすべては、新しい sphinx 検索エンジンの更新を含むフォルダーをリモート サーバーに同期することです。次に、2 行目でリモート ssh コマンドを実行して、検索エンジンが更新を本番環境にローテーションするよう強制します。

私はファブリックをインストールしています (したがってローカル コマンド) が、2 番目のファイルをファブする必要がないようにするために、1 行のコードでリモート サーバー上で sudo コマンドを実行できるようになることを望んでいました。

誰かが私を助けることができますか?

4

1 に答える 1

1

私は答えを見つけました。バックグラウンドで実行されるスクリプトのsshコマンドの場合-t -t、疑似端末を強制する必要があります。

参照:

stdinは端末ではないため、疑似端末は割り当てられません

于 2013-03-24T00:04:58.947 に答える