2017-01-27 2 views
0

Эта статья (https://news.ycombinator.com/item?id=9793466) делает случай для редкоиспользования forking в systemd. После этого совета я пытаюсь следующий сценарий питона службы:Требуется ли форматирование systemd, когда служба 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() 

со следующим сценарием systemd.service:

[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

Ваша выходная проблема, вероятно, буферизованная. Я не вижу каких-либо выходных буферов в вашей программе.

См How to flush output of Python print?

Кроме того, перенаправлять ваш выход в свой собственный файл журнала на самом деле не Systemd способ сделать это. Если вы позволите стандартным выводам и ошибкам перейти к значениям по умолчанию, они будут в журнале, и вы можете получить его с помощью journalctl -u my-service

+0

Спасибо, вот оно! – stustd

Смежные вопросы