本文(https://news.ycombinator.com/item?id=9793466)说明了在systemd中稀疏地使用分叉。遵循这个建议我尝试以下python服务脚本:
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但它并不包含预期的输出...帮助赞赏。
答案 0 :(得分:1)
您的输出问题可能是缓冲输出。我没有在程序中看到任何输出缓冲区刷新。
请参阅How to flush output of Python print?
此外,将输出重定向到您自己的日志文件并不是系统化的方法。如果您将标准输出和错误转为默认值,它们将在日记中,您可以使用journalctl -u my-service