inotifywaitツールは、バイナリファイルを置き換えるときに複数のログを同時に表示します。

inotifywaitツールは、バイナリファイルを置き換えるときに複数のログを同時に表示します。

リストに追加されたディレクトリのバイナリファイルを置き換えるたびに。intoifywait同じログが複数回表示されます。しかし、.jsなどのような他のファイルではうまくいきます。以下はログです

monitor_status DELETE 2018-08-12 14:07:54
monitor_status CREATE 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
monitor_status MODIFY 2018-08-12 14:07:54
hello CREATE 2018-08-12 14:09:38
monitor_status DELETE 2018-08-14 07:02:52
monitor_status CREATE 2018-08-14 07:02:52
monitor_status MODIFY 2018-08-14 07:02:52
monitor_status MODIFY 2018-08-14 07:02:52
monitor_status MODIFY 2018-08-14 07:02:52
monitor_status MODIFY 2018-08-14 07:02:52
monitor_status MODIFY 2018-08-14 07:02:52

答え1

inotifywaitは、システムに対する各「書き込み」を表示します。単純なcp(私のテストシステムとext4で)の場合は、64kごとに修正を行います。

# dd if=/dev/urandom of=test bs=64K count=1
1+0 records in
1+0 records out
65536 bytes (66 kB) copied, 0.00178826 s, 36.6 MB/s
# cp test test2

以下を提供します(コピーのみ):

./ OPEN test
./ MODIFY test2
./ OPEN test2
./ ACCESS test
./ MODIFY test2
./ CLOSE_WRITE,CLOSE test2
./ CLOSE_NOWRITE,CLOSE test

しかし:

# dd if=/dev/urandom of=test bs=128K count=1
1+0 records in
1+0 records out
131072 bytes (131 kB) copied, 0.00251142 s, 52.2 MB/s
# cp test test2

以下を提供します(コピーのみ):

./ OPEN test
./ MODIFY test2
./ OPEN test2
./ ACCESS test
./ MODIFY test2
./ ACCESS test # one more time
./ MODIFY test2 # one more time
./ CLOSE_WRITE,CLOSE test2
./ CLOSE_NOWRITE,CLOSE test

同じ内容がstraceに表示されます。

# 64k file
open("test", O_RDONLY)                  = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=65536, ...}) = 0
open("test2", O_WRONLY|O_TRUNC)         = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
fadvise64(3, 0, 0, POSIX_FADV_SEQUENTIAL) = 0
read(3, "\374\207\343\36\263\17\224A\361R\271\333\f\1\342\236K\n\270\f\250x}/\346}a\221\237\323\315\32"..., 65536) = 65536
write(4, "\374\207\343\36\263\17\224A\361R\271\333\f\1\342\236K\n\270\f\250x}/\346}a\221\237\323\315\32"..., 65536) = 65536
read(3, "", 65536)                      = 0
close(4)                                = 0
close(3)                                = 0

# 128k file
open("test", O_RDONLY)                  = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=131072, ...}) = 0
open("test2", O_WRONLY|O_TRUNC)         = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
fadvise64(3, 0, 0, POSIX_FADV_SEQUENTIAL) = 0
read(3, "pK;\376\326\17gx\20\227\320\204\7\6:\233r\0\215\215b\r?2\31\206\331\16q\205\324\22"..., 65536) = 65536
write(4, "pK;\376\326\17gx\20\227\320\204\7\6:\233r\0\215\215b\r?2\31\206\331\16q\205\324\22"..., 65536) = 65536
read(3, "\37515X\225\230xL\nhW\"\240\315P]\376\347#\10\341\25\215\212:f9q\313\255\32\n"..., 65536) = 65536
write(4, "\37515X\225\230xL\nhW\"\240\315P]\376\347#\10\341\25\215\212:f9q\313\255\32\n"..., 65536) = 65536
read(3, "", 65536)                      = 0
close(4)                                = 0

ファイルシステムによって異なるかどうかはわかりませんが、cpはファイルを固定サイズの部分(私の場合は64k)にコピーし、各部分が作成されたときに「修正」イベントを表示できます。

関連情報