明明打印到文件了,为啥tail -f看不到

简介: 文章《一分钟了解nohup和&的功效》留了一个“nohup.out为啥没有包含stdout输出”的尾巴,今天把坑填了。

文章《一分钟了解nohup和&的功效》留了一个“nohup.out为啥没有包含stdout输出”的尾巴,今天把坑填了。

image.png

测试代码是一个打印hello与循环轮数的死循环程序,每打印一行就休眠1秒。

image.png

使用./a.out 运行程序后,每隔一秒会在终端输出一个字符串。

image.png

使用nohup ./a.out运行程序后,有一个“忽略输入,输出至nohup.out”的提示。

image.png

把程序killall干掉之后,果然有一个nohup.out生成。

不过这个文件的大小是0,有点奇怪,启动程序的时候,明明提示了“appending output to nohup.out”呀,这是为什么呢?原本打印在终端的hello字符串去哪里了呢?

留言里不少同学猜测和2>&1 >/dev/null有关,但其实本例并未将标准输出,标准错误输出重定向。

nohup.out未能及时输出,是因为nohup后,为了提高性能stdout启用了缓冲,并不会实时把内容写入文件,只有当缓冲写满了才会刷盘。killall程序时,还来不及刷盘程序就退出了,于是出现了空nohup.out文件。

如果想要实时刷盘,可以选择:

  • 把缓冲设为空,setbuf(stdout, NULL)
  • 强制刷盘,fflush(stdout)

image.png

如上图,程序添加一行“fflush(stdout)”之后,再次测试。

image.png

就能够看到nohup.out会实时的刷新数据啦。

遗留:

  • 评论里说的2>&1 >/dev/null 是什么鬼?
  • 打印日志的时候,是需要实时刷新,还是缓存刷新呢?

额,上一篇《一分钟了解nohup和&的功效》,介绍了一个linux小知识,就被喷得厉害,评论说文章拉低了58的技术水准,下一篇回归架构,介绍“全链路调用链跟踪架构”以及“如何在小公司快速落地全链路调用链跟踪实践”。

目录
相关文章
|
9月前
|
API 数据安全/隐私保护 UED
探索鸿蒙的蓝牙A2DP与访问API:从学习到实现的开发之旅
在掌握了鸿蒙系统的开发基础后,我挑战了蓝牙功能的开发。通过Bluetooth A2DP和Access API,实现了蓝牙音频流传输、设备连接和权限管理。具体步骤包括:理解API作用、配置环境与权限、扫描并连接设备、实现音频流控制及动态切换设备。最终,我构建了一个简单的蓝牙音频播放器,具备设备扫描、连接、音频播放与停止、切换输出设备等功能。这次开发让我对蓝牙技术有了更深的理解,也为未来的复杂项目打下了坚实的基础。
306 58
探索鸿蒙的蓝牙A2DP与访问API:从学习到实现的开发之旅
|
前端开发 Java 应用服务中间件
springboot 升级(1.5.7.RELEASE升级到2.7.10) Tomcat启动报错
springboot 升级(1.5.7.RELEASE升级到2.7.10) Tomcat启动报错
|
前端开发 程序员 调度
探索协程在 C++ 中的实现方式
探索协程在 C++ 中的实现方式
298 2
|
运维 Serverless API
带你读《浅谈阿里云通用产品线Serverless的小小演化史》三、开箱即用的免运维 ---全托管服务能力(3)
带你读《浅谈阿里云通用产品线Serverless的小小演化史》三、开箱即用的免运维 ---全托管服务能力(3)
626 0
|
机器学习/深度学习 安全 算法
瓴羊Dataphin隐私计算:数据安全流通方案-隐私计算概述-隐私计算技术类型
瓴羊Dataphin隐私计算:数据安全流通方案-隐私计算概述
305 0
|
SQL 缓存 NoSQL
记录一次高并发引起的生产事故的溯源记录
记录一次高并发引起的生产事故的溯源记录
202 0
|
前端开发 JavaScript Java
向我所爱,不断进取。抱歉,这款基于springboot的开源的低代码框架让您久等了
向我所爱,不断进取。抱歉,这款基于springboot的开源的低代码框架让您久等了
向我所爱,不断进取。抱歉,这款基于springboot的开源的低代码框架让您久等了
|
人工智能 Java
HDU - 2018杭电ACM集训队单人排位赛 - 4 - Problem C. Sequence
HDU - 2018杭电ACM集训队单人排位赛 - 4 - Problem C. Sequence
147 0
|
SQL 数据可视化 关系型数据库
postgresql如何设置自动增长
postgresql如何设置自动增长
550 0
|
数据采集 人工智能 Python
自学人工智能:1-3 接触scrapy框架
已经学了几天python,今天通过对scrapy框架的认识,加深对python的印象。
1672 0