をmultilogするスクリプトログをシェル:daemontoolsのは、私は、次のシェルスクリプトを持って
#!/bin/sh
exec 2>&1
echo "Starting ..."
python /home/services/example.py
Pythonスクリプトは、単にprintコマンドで構成されています。上記のスクリプトはdaemontoolsデーモンであり、単純なログ機構も有効です(multilog
)。しかし、main/log/current
では、 "Starting ..."という行は表示されていますが、pythonスクリプトの印刷されたコマンドは表示されません。
私は電話で何か間違っているのですか、何か忘れましたか?
EDIT私が実行しようとしています Pythonスクリプトは次のとおりです。繰り返し
sys.stdout.write("Hello world")
を実行している
from time import sleep
import sys
sys.stdout.write("Hello World")
print "Hello World"
while 1:
sys.stdout.write("Hello world")
sleep(10)
例えば、 'sys.stdout'や' sys.stderr'に10秒ごとに書き込むPythonスクリプトを書くと、問題が再現されますか?そうでない場合、stderrがログに記録するかどうかを決める前にstderrがttyであるかどうかをチェックするスクリプトのような、もっと興味深いものがあるかもしれません。もしそうなら、これは再生または解決するプログラムの実行の詳細を調べる必要があります。 –
[...別のところでは、手元の問題には本質的ではないので、 'exec python/home/services/example.py'とすることをお勧めします。 Pythonサービス、それを実行しているシェルではありません]。 –
(もう一つの可能性は、出力がラインバッファリングされていないか、そうでなければフラッシュされていないということですが、そうであれば少し驚くかもしれませんが、まだ実行中のプログラムの詳細に依存します。助けてください)。 –