1、 pipe容量不足
使用nohup后台进程处理之后信息会不断发送给远程pc,如果关闭控制台,会导致pipe堵塞,如果信息接着不断发送,就会导致pipe容量不足,信息堵塞。
solution:
重定向输出,使用stdout代替print,将print的内容输入到文件中;或者更加简洁的方法是,在控制台运行程序的时候使用 > 或 >>,将print的结果直接输入到文件中。 前者是覆盖书写,后者是追加书写。具体方法可以百度或者google。
2、 SIGPIP信号异常
如果已经重定向输出,仍然有这个问题,那可能是因为当head程序从管道的一端读取到足够的数据后就会关闭管道,而python程序正在管道的另一端写入,于是python程序就会接收到SIGPIPE信号使程序异常退出。而tail命令是等管道写入完成后再关闭管道,所以可以让python忽略这个信号。
solution:
加上如下代码
import sys from signal import signal, SIGPIPE, SIG_DFL
#让 python 忽略 SIGPIPE 信号,并且不抛出异常
signal(SIGPIPE,SIG_DFL)
reference:
https://blog.csdn.net/woay2008/article/details/83592298
https://stackoverflow.com/questions/14207708/ioerror-errno-32-broken-pipe-python