linux – tail -f没有尾巴?

前端之家收集整理的这篇文章主要介绍了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.

猜你在找的Linux相关文章