以上的信息可以通过 inotifywait --help 获得
1.5.6 inotifywait 参数--timefmt <fmt>时间格式参数
命令参数
参数说明
%d(重要参数)
The day of the month as a decimal number(range 01 to 31)
每月的第几天,显示倍息为十进制数(范围是 01-31 )
%m(重要参数)
The month as a decimal number (range 01 to 12).
显示月份,显示信息为十进制(范围 01-12 )
%M
The minute as a decimal number (range 00 to 59).
显示分钟,显示信息为十进制(范围 00-59 )
%y(重要参数)
The year as a decimal number without a century (range 00 to 99).
年份信息,显示信息为十进制,并且没有世纪信息
%Y
The year as a decimal number including the century.
年份信息,显示信息为十进制,并且包含世纪信息
%H
The hour as a decimal number using a 24-hour clock (range 00 to 23).
小时信息,显示信息为十进制,使用 24小时制(范围 00-23 )
说明:以上信息可以通过 man strftime信息获取
1.5.6.1 修改输出的日期格式
[root@nfs01 ~]# inotifywait -mrq /data --timefmt "%d/%m/%y %H:%M" --format "%T %w%f"
17/10/17 11:12 /data/test1.txt
1.5.7 -e[参数] 重要监控事件参数汇总表:重要事件
包含事件
备注说明
close
close_write
close_nowrite
文件或目录关闭,不管读或是写模式
即包含写关闭与读关闭
close_write
create
包含文件创建事件,但不包含目录创建事件
move
moved_to
moved_from
文件或目录不管移动到或是移动出监控目录都触发事件
即包含信息移入或移出监控目录事件
重要参数汇总:根据以上说明,在实际使用时,只要监控以下事件即可
create 创建、 delete 删除、 movedjto 移入、 close_write 修 改
inotifywait -mrq /data --format "%w%f" -e create,delete,moved_to,close_write
1.6 对inotifywait命令的测试
对inotifywait命令测试的说明:
需要打开两个连接窗口
1窗口运行inotifywait
2窗口对文件夹进行操作,可在一窗口中查看出inotifywait的监控记录
1.6.1 、创建文件的逻辑↓
[root@nfs01 ~]# inotifywait /data
Setting up watches.
Watches established.
/data/ CREATE test1.txt
/data/ OPEN test1.txt
/data/ ATTRIB test1.txt
/data/ CLOSE_WRITE,CLOSE test1.txt
创建文件,inotifywait显示创建文件的过程↑
[root@nfs01 data]# touch test1.txt
1.6.2 创建目录逻辑↓
[root@nfs01 data]# mkdir testdir
[root@nfs01 ~]#
/data/ CREATE,ISDIR testdir
1.6.3 监控子目录下的文件↓
[root@nfs01 data]# touch testdir/test01.txt
[root@nfs01 ~]# inotifywait -mrq /data
/data/testdir/ OPEN test01.txt
/data/testdir/ ATTRIB test01.txt
/data/testdir/ CLOSE_WRITE,CLOSE test01.txt
1.6.4 sed命令修改逻辑
[root@nfs01 data]# sed 's#132#123#g' test.txt -i
[root@nfs01 ~]# inotifywait -mrq /data --timefmt "%d-%m-%y %H:%M" --format "%T %w%f 事件信息: %e" -e moved_from
/data/test.txt 事件信息: OPEN
/data/sedDh5R8v 事件信息: CREATE
/data/sedDh5R8v 事件信息: OPEN
/data/test.txt 事件信息: ACCESS
/data/sedDh5R8v 事件信息: MODIFY
/data/sedDh5R8v 事件信息: ATTRIB
/data/sedDh5R8v 事件信息: ATTRIB
/data/test.txt 事件信息: CLOSE_NOWRITE,CLOSE
/data/sedDh5R8v 事件信息: CLOSE_WRITE,CLOSE
/data/sedDh5R8v 事件信息: MOVED_FROM
/data/test.txt 事件信息: MOVED_TO
sed命令替换逻辑 :
01. 创建临时文件
02. 将原文件内容放置到临时文件中,修改替换临时文件中的内容,原有文件不做改动
03. 重命名临时文件,覆盖原文件
1.6.5 inotifywait监控中 -e 的参数使用
inotifywait -mrq /data --timefmt "%d/%m/%y %H:%M" --format "%T %w%f 事件信息: %e" -e create
说明:表示只监听create事件
inotifywait -mrq /data --timefmt "%d/%m/%y %H:%M" --format "%T %w%f 事件信息: %e"
说明:不指定-e参数,表示监听所有事件
02. 删除事件delete
# inotifywait -mrq /data --timefmt "%F %H:%M" --format "%T %w%f 事件信息: %@e" -e delete
2017-10-17 11:28 /data/02.txt 事件信息: DELETE
2017-10-17 11:28 /data/03.txt 事件信息: DELETE
2017-10-17 11:28 /data/04.txt 事件信息: DELETE
03. 修改事件close_write
# inotifywait -mrq /data --timefmt "%F %H:%M" --format "%T %w%f 事件信息: %@e" -e delete,close_write
2017-10-17 11:30 /data/oldgirl.txt 事件信息: CLOSE_WRITE@CLOSE
2017-10-17 11:30 /data/.oldgirl.txt.swx 事件信息: CLOSE_WRITE@CLOSE
2017-10-17 11:30 /data/.oldgirl.txt.swx 事件信息: DELETE
2017-10-17 11:30 /data/.oldgirl.txt.swp 事件信息: CLOSE_WRITE@CLOSE
2017-10-17 11:30 /data/.oldgirl.txt.swp 事件信息: DELETE
2017-10-17 11:30 /data/.oldgirl.txt.swp 事件信息: CLOSE_WRITE@CLOSE
2017-10-17 11:30 /data/.oldgirl.txt.swp 事件信息: DELETE
04. 移动事件moved_to
inotifywait -mrq /data --timefmt "%F %H:%M" --format "%T %w%f 事件信息: %@e" -e delete,close_write,moved_to
2017-10-17 11:34 /data/hosts 事件信息: MOVED_TO
1.7 实时同步命令参数示意图