nohup指令输出无效以及输出重定向

一、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指令非常的强大,可以采用""引号里面采用正则匹配的方式,
这个真的非常的强大

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值