一、介绍
在日常的工作中,当服务器发生异常状况时,我们需要了解服务器的状态变化以及可能出现的问题。而Linux的文件更改记录工具-w,可以帮助系统管理员实时监测系统的文件状态变化,找到问题的根源。
-w命令是inode变化监视器,通过对比Inode号和Size等信息来判断文件是否被更改过,是syslogd和acct程序的重要组成部分。
二、查看正在查看的文件
我们可以使用-w命令来查看正在写入或更新的文件:
$ watch -n 1 -d lsof -r 1 -p `pidof "Program Name"`
其中,“Program Name”修改为你想要监测的程序名。这个命令会每隔1秒更新一次。
三、查看被更改的文件
我们可以使用-w命令查看最近被更改的文件:
$ watch -n 1 -d "find /var/log -type f -mmin -1 -print0 | xargs -0 ls -lUd"
运行后,会每隔一秒检测一遍/var/log目录下被更改过的文件,输出如下:
-rw-r--r-- 1 root root 130 Aug 15 09:23 /var/log/nginx/access.log -rw-r--r-- 1 root root 130 Aug 15 09:23 /var/log/nginx/error.log
上述命令中的-mmin参数设置了查找修改时间在1分钟内的文件,-print0和xargs -0的组合用于处理文件名中包含空格和特殊字符的情况。
四、同时监控多个文件
有时我们需要监控多个文件,可以使用命令:
$ watch -n1 -d -t "ls -lrt /var/log/messages /var/log/secure"
输出如下:
-rw-------. 1 root root 9393 Aug 15 11:00 /var/log/messages -rw-------. 1 root root 20432 Aug 15 11:00 /var/log/secure
五、查看文件夹下所有文件的变动
有时,我们需要查看某个目录下所有文件的变动情况,可以使用命令:
$ watch -n 1 -d "find /opt/data/logs/* -type f -exec stat \"{}\" \; | grep Modify"
该命令会每隔一秒检测一遍/opt/data/logs/目录下所有文件的变动情况,并输出修改时间等信息。
六、总结
使用-w查看系统文件更改记录是Linux运维工程师必备的技能之一。通过以上几种方式,我们可以实时监测系统的文件状态变化,及时排查并解决问题。