我正在运行这样的Python程序
nohup python3 -u /home/myuser/foo.py | ts '[%Y-%m-%d %H:%M:%.S]' &>> /var/log/mylogs/foo.log &
程序处理输入和
print
的输出。它是多线程的,但大部分处理和所有print
操作都发生在一个“主”线程上。
现在有几次,我遇到了程序尝试打印但点击了
BrokenPipeError: [Errno 32] Broken pipe
的情况。什么会导致这种情况发生?
我发现这个问题让我觉得我正在对
| ts ... &>>
做出假设,就像ts
可能会因某种原因而死亡,但这看起来很奇怪,我以同样的方式设置的其他程序没有表现出来这种行为。
试试这个:
nohup bash -c "python3 -u /home/myuser/foo.py | ts '[%Y-%m-%d %H:%M:%.S]' &>> /var/log/mylogs/foo.log" &