解决方法
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.