一、nohup指令输出无效
当我们实用nohup ....&发现nohup.out文件中并没有内容时
1. shell 环境变量
执行 export PYTHONUNBUFFERED=1, 那么再此shell下源码执行的 nohup python xx.py & 将不再将日志刷新到缓冲区而是直接输出到 nohup.out
2. python -u
nohup python -u xx.py & , 日志将直接输出到 nohup.out ,不走缓冲区
如果时pyhton输出无效的话,可以添加参数-u,就是不走缓冲区,
3. flush buffer (非源码部署适用)
强刷 sys.write 的缓冲区, print 的标准输出实际上是到了 sys.write的缓冲区,当遇到回车、 程序执行结束、 flush 或者 达到了指定的大小 等操作 则会输出到控制台或者 nohup.out, 代码更改
import sys
class UnBuffer:
def __init__(self, stream):
slef.stream = stream
def write(self, char):
self.stream.write()
self.stream.flush()
def __getattr__(self, attr)
return getattr(self.stream, attr)
sys.stdout = UnBuffer(sys.stdout)
二、终端输出重定向
echo 'helloworld' >> test.txt 这个指令会在test.txt文件中进行追加内容
echo 'helloworld' > test.txt 这个指令则是重新写入文件,也就是会将原内容清空
将正确内容和错误内容进行区分
find / -iname "*.conf" 2> err.log > info.txt
同时注意find指令非常的强大,可以采用""引号里面采用正则匹配的方式,
这个真的非常的强大