使用 head 命令或类似命令来确定文件中的字节何时发生变化

使用 head 命令或类似命令来确定文件中的字节何时发生变化

如果我们使用 tail 命令,我们可以监听表示文件长度(以字节为单位)更改的事件。

我正在寻找一种方法来侦听文件内容更改但长度相同时的事件。具体来说,就是监听文件第一行或第二行的更改。

(我们可能期望 head 命令可以做到这一点,但它确实不是看起来 head 命令可以监听变化,它只是抓住内容的开头。)

有谁知道是否可以监听文件内容的更改(特别是文件的开头)?

请注意,有一个进程将数据附加到文件,另一个进程读取并删除文件的第一行。

我有兴趣独立侦听文件头的更改,但我不想捕获或希望能够过滤掉附加到文件的事件。

答案1

也许是这样的:

#!/bin/bash

while true; do
    diff -q <(head -n 1 fileA.txt) <(head -n 1 fileB.txt)
    sleep 5
done

给定这两个文件 (fileA.txtfileB.txt):

cat fileA.txt fileB.txt 
foo
bar

foo
bar

当我改变第一的fileA.txt

cat fileA.txt 
fooo
bar

我从脚本中得到以下输出:

./checkFirst.sh 
Files /dev/fd/63 and /dev/fd/62 differ
Files /dev/fd/63 and /dev/fd/62 differ
Files /dev/fd/63 and /dev/fd/62 differ
Files /dev/fd/63 and /dev/fd/62 differ

如果我改变第二行,脚本中没有任何反应,它只是不断循环:

cat fileA.txt 
foo
barbara

使用 Mac OS X 10.11.6 进行测试并且:

GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)
Copyright (C) 2007 Free Software Foundation, Inc.

相关内容