2017-01-27 2 views
0

この記事(https://news.ycombinator.com/item?id=9793466)は、システムでフォークをまばらに使用するケースを作成します。次systemd.serviceスクリプトでpythonサービスがFileIOを実行する場合、システムフォークが必要ですか?

import time 

def run(): 
    with open("/tmp/pysystemd/svc.out","w") as f: 
     while True: 
      print("***") 
      f.write("+++\n") 
      time.sleep(0.5) 

run() 

:このアドバイスに続いて、私は次のPythonサービススクリプトを試してみてください

[Unit] 
Description=Simple zebra service 
After=multi-user.target 

[Service] 
Type=Simple 
#ExecStart = /usr/bin/python /tmp/pysystemd/svc.py > /tmp/pysystemd/std.out 
ExecStart = /bin/bash -c '/usr/bin/python /tmp/pysystemd/svc.py > /tmp/pysystemd/std.out' 
WorkingDirectory = /tmp/pysystemd 

[Install] 
WantedBy=multi-user.target 

ファイル/tmp/pysystemd/std.outが作成されているが、それは含まれていません。期待される出力...ヘルプが高く評価されました。

答えて

1

出力の問題はおそらくバッファリングされた出力です。私はあなたのプログラムで出力バッファのフラッシュが表示されません。

は、独自のログファイルにあなたの出力をリダイレクトすると、実際にそれを行うためにsystemdの方法ではありません、また

How to flush output of Python print?を参照してください。あなたの標準出力とエラーがデフォルトになるようにすれば、彼らはジャーナルに入ります。journalctl -u my-service

+0

ありがとう、それだけです! – stustd

関連する問題