加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – tail -f没有尾巴?

发布时间:2020-12-13 16:56:11 所属栏目:Linux 来源:网络整理
导读:在Solaris中是否有一个命令来读取文件,当它到达尾部时,尾部的方式是什么?我需要从头开始读取文件,它是一个二进制文件. 有关Solaris和Linux的信息将不胜感激. 解决方法 tail -9999f将做一些接近你想要的东西.如果您的文件更大,请添加更多9. 问题: 二进制文
在Solaris中是否有一个命令来读取文件,当它到达尾部时,尾部的方式是什么?我需要从头开始读取文件,它是一个二进制文件.

有关Solaris和Linux的信息将不胜感激.

解决方法

tail -9999f将做一些接近你想要的东西.如果您的文件更大,请添加更多9.

问题:

>二进制文件可能没有换行符. tail -f将在打印任何内容之前等待换行.
> Solaris上的尾部版本(您没有提到哪个Solaris但它可能无关紧要)可能不支持该选项.它可能支持tail -n 9999 -f.您可能必须获得GNU版本的尾部.
>因为文件不断增长,所以在找出它有多大和开始尾部过程之间存在竞争条件.如果你没有要求它获得足够的行,你可能会错过文件的开头.
> tail将不知道你何时真正写完文件所以你的gzip进程也永远不会完成.我不确定当你按ctrl-c来结束尾部进程时会发生什么,但gzip很可能会自行清理并删除它正在处理的文件.

我的建议是启动你的原始程序并将输出管道输出到gzip,如下所示:

./my_program | gunzip > new_file.txt

这样,如果my_program变慢,gunzip会等待,但是当my_program表示文件的真正结束时,它仍然会完成.

您可能需要重写程序以写入STDOUT而不是直接写入文件.

编辑:

看了man page之后,可以解决上面的三个问题.使用-c< bytes>选项而不是-n< lines>缓解问题1.使用-n 0或-c 0缓解问题3.使用–pid =< PID>当原始程序(以< PID>运行)终止时,尾部将终止,这减轻了问题4.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读