点击上方“中兴开发者社区”,关注我们
每天读一篇一线开发者原创好文
监控硬盘读写
系统运行过程中,一些进程会向硬盘中写入大量的数据,如果写入的数据量不做控制,总有一天硬盘会被写满,导致一些奇奇怪怪的问题。
为了避免硬盘被写满,就需要监控硬盘的使用情况,例如需要感知到系统中写入了哪些文件,文件的大小有多少,最好能够跟踪到进程,查看进程打开的文件,并监控此进程读写硬盘的字节数。
系统级文件操作监控
Linux操作系统提供了inotify机制,通过这种机制,我们可以实时监控指定文件/目录发生了什么变化,关于inofiy的原理可以参考文档【https://www.ibm.com/developerworks/cn/linux/l-inotifynew/index.html】。
inotify可以监控任意文件/目录,可以监控到文件的写入读取事件、目录内创建文件等,需要注意的是在监控目录时,只能监控到该目录下的操作,无法监控到子目录里面的操作。
inotify应用代码
inotify应用源码参考 http://man7.org/tlpi/code/online/dist/inotify/demo_inotify.c.html :
#include
#include
#include
#include
#include/* Prototypes for many system calls */
staticvoid/* Display information from inotify_event structure */
displayInotifyEvent(structinotify_event*i)
{
printf(" wd =%2d; ",i->wd);
if(i->cookie>0)
printf("cookie =%4d; ",i->cookie);
printf("mask = ");
if(i->mask&IN_ACCESS)printf("IN_ACCESS ");
if(i->mask&IN_ATTRIB)printf("IN_ATTRIB