Bash 如何在终端中查看实时覆盖文件?
我有一个不断被覆盖的输出文件。终端tail-f filename中有一个命令,当结果附加到输出文件中时,该命令很有用。但是,我想观察不断被覆盖的输出文件的前10或20行。有这样的命令吗?它每1秒刷新一次,并打印文件名的前100行Bash 如何在终端中查看实时覆盖文件?,bash,shell,sh,Bash,Shell,Sh,我有一个不断被覆盖的输出文件。终端tail-f filename中有一个命令,当结果附加到输出文件中时,该命令很有用。但是,我想观察不断被覆盖的输出文件的前10或20行。有这样的命令吗?它每1秒刷新一次,并打印文件名的前100行 watch -n 1 head -100 filename 如果使用,您将使用,例如: #!/bin/sh while :; do tail file wait_on -w file done 您可能需要使用pkg install wait_on安
watch -n 1 head -100 filename
如果使用,您将使用,例如:
#!/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
根据您的发行版,您可能需要安装inotifytools
软件包,例如在:yum安装inotifytools
有关更多选项,请查看此问题的答案:建议使用php 在命令行中。这不会将整个文件加载到内存中 输出seed.txt的前8192字节 fread()从引用的文件指针读取最多长度字节 手柄一旦出现下列情况之一,读数即停止 遇见
请参见是否希望每隔一段时间刷新一次,或者仅当文件已更改时才刷新?是否希望或需要保证在每次写入之间至少读取一次文件?
php -r "echo fread(fopen('seed.txt','r'), 8192);"