我有一个不断被覆盖的输出文件。终端tail -f filename中有一个命令,当结果附加在输出文件中时,这是有用的。但是,我想观察不断覆盖的输出文件的前10行或20行。有没有这样的命令?
答案 0 :(得分:1)
每1秒刷新一次并打印前100行文件名
watch -n 1 head -100 filename
答案 1 :(得分:0)
#!/bin/sh
while :; do
tail file
wait_on -w file
done
您可能需要使用pkg install wait_on
在Linux中,您可以使用inotifywait
之类的内容:
#!/bin/sh
inotifywait --quiet --monitor --event modify file | while read; do
tail file;
done
根据您的发行版,您可能需要安装inotify-tools
包,例如CentOS:yum install inotify-tools
有关更多选项,请查看此问题的答案:https://superuser.com/q/181517/284722
答案 2 :(得分:0)
建议使用 php 。
在命令行中。这不会将整个文件加载到内存中。
首先输出 seed.txt 的8192字节。
php -r "echo fread(fopen('seed.txt','r'), 8192);"
fread()从引用的文件指针读取长度字节 处理。只要满足以下条件之一,读取就会停止 遇到http://php.net/manual/en/function.fread.php