微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – tail -f没有尾巴?

在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.

原文地址:https://www.jb51.cc/linux/399066.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐