当前位置: 首页 > news >正文

qq刷赞网站如何做分站专业网站建设电

qq刷赞网站如何做分站,专业网站建设电,免费提供ppt模板的网站,黑帽seo教程1 Fanotify vs Inotify 在实现某些功能时#xff0c;可能需要获取某个文件执行的操作#xff0c;一种可能的方案是用Audit的路径监控#xff0c;但是Audit存在性能和内核稳定性问题#xff0c;这个时候就可以其他的文件变更检测机制。 inotify可以监控文件被创建、修改和…1 Fanotify vs Inotify 在实现某些功能时可能需要获取某个文件执行的操作一种可能的方案是用Audit的路径监控但是Audit存在性能和内核稳定性问题这个时候就可以其他的文件变更检测机制。 inotify可以监控文件被创建、修改和访问的事件当文件或者目录发生变化时可以得到变更的事件但是inotify有个比较大的不足就是无法得到执行操作的进程Pid。fanotify是另一种文件监控机制在使用上两者类似都是先调用init函数初始化句柄然后调用类似watch的函数添加监控路径再使用selectread的方式读取出变化的事件根据事件中给出的参数获取文件的路径、事件类型以及其他需要的数据。与inotify相比fanotify的优势在于 访问控制inotify只能监控文件的变化而fanotify可以在用户操作之前决定是否可以继续操作相当于可以用于实现阻断的功能监控范围inotify用于监控文件或者目录的变化如果要监控目录下所有文件(包括子目录)就需要自行递归添加路径fanotify则提供directed、per-mount和global三种监控模式其中global模式可以用于监控整个文件系统进程信息inotify只能得到某个文件发生了什么事件fanotify可以得到对文件操作的进程pid程序可以从/proc/pid读取进程信息 2 Fanotify Demo #include sys/fanotify.h #include fcntl.h #include stdio.h #include unistd.h #include errno.h #include stdlib.h #include string #include string.hint main(int argc, char *argv[]) {int fan_fd, fd;if(argc 2) {printf(usage: ./main path\n);return -1;}// 初始化fanotify的描述符后续的操作都是通过该描述符fan_fd fanotify_init(FAN_CLASS_NOTIF, O_RDONLY);if (fan_fd 0) {perror(fanotify_init);return -1;}// 增加监控路径if (fanotify_mark(fan_fd, FAN_MARK_ADD, FAN_ACCESS|FAN_MODIFY|FAN_EVENT_ON_CHILD, AT_FDCWD, argv[1]) 0) {perror(fanotify_mark);return -1;}fd_set rfds;while (1) {// 使用selectread读取变更的事件FD_ZERO(rfds);FD_SET(fan_fd, rfds);struct timeval timeo {.tv_sec 0, .tv_usec 500000};char buf[4096] {0};int ret select(fan_fd 1, rfds, NULL, NULL, timeo);if (ret 0) {close(fan_fd);fan_fd -1;break;} else if (ret 0) {continue;}struct fanotify_event_metadata* metadata reinterpret_caststruct fanotify_event_metadata*(buf);ssize_t len read(fan_fd, buf, sizeof(buf));if (len -1 errno EAGAIN) {continue;}if (len -1) {perror(read);exit(EXIT_FAILURE);}// 遍历返回的变更事件for (; FAN_EVENT_OK(metadata, len);metadata FAN_EVENT_NEXT(metadata, len)) {printf(fd%d pid%d , metadata-fd, metadata-pid);// 根据返回的事件中的mask判断事件类型if (metadata-mask FAN_ACCESS) {printf(eventread );} else if (metadata-mask FAN_MODIFY) {printf(eventwrite );} else {printf(eventother );}// 根据返回事件中的fd读取操作的文件路径char path[1024] {0};char flink[1024] {0};sprintf(flink, /proc/self/fd/%d, metadata-fd);if (readlink(flink, path, sizeof(path)) 0) {printf(readlink %s failed: %s\n, flink, strerror(errno));close(metadata-fd);printf(\n);continue;}printf(path%s\n, path);// 此处不能少由于该fd是在当前进程中需要在处理完该事件后关闭close(metadata-fd);}}close(fan_fd);return 0; }3 Fanotify API 通过上述示例代码发现使用fanotify监控路径的基本套路是 调用fanotify_init初始化文件描述符调用fanotify_mark对路径进行监控使用selectread读取变更事件使用FAN_EVENT_OK和FAN_EVENT_NEXT宏遍历变更事件读取到变更事件后根据事件中的mask得到事件类型通过事件中的pid得到进程信息通过事件中的fd得到文件路径处理完成后关闭fd关闭fanotify的文件描述符 因此使用过程中重点是需要了解fanotify_init和fanotify_mark两个API的参数和含义。 3.1 fanotify_init #include fcntl.h #include sys/fanotify.hint fanotify_init(unsigned int flags, unsigned int event_f_flags);fanotify_init函数用于初始化文件描述符flags参数可以使用两类标志一类是通知类型(notification classes)另一类是对fanotify的文件描述符的一些属性设置。 通知类型有三类 FAN_CLASS_PRE_CONTENT当文件被访问和文件内容被修改之前收到事件适用于在文件被修改之前需要执行操作的场景FAN_CLASS_CONTENT当文件被访问和文件内容被修改之后收到事件适用于在文件被修改之后需要执行操作的场景FAN_CLASS_NOTIF默认值当文件被访问时会收到事件不能进行访问控制 如果程序只需要获取事件而不需要进行访问控制可以用默认值否则就需要根据使用场景进行选择。另外根据含义三类事件也是按照从上到下的顺序接收的。 设置fanotify的文件描述符的属性的标志 FAN_CLOEXEC设置fanotify的文件描述符的close-on-exec属性类似open中的O_CLOEXECFAN_NONBLOCK将文件描述符设置为非阻塞FAN_UNLIMITED_QUEUE移除事件队列的长度限制默认限制是16384个事件该标志位需要CAP_SYS_ADMIN权限FAN_UNLIMITED_MARKS移除监控点数量的限制默认限制是8192该标志位需要CAP_SYS_ADMIN权限 除了上述标志位后续的内核还提供其他的标志位可以在事件上上报更多数据 FAN_REPORT_TIDkernel4.20事件包含线程IDFAN_REPORT_FIDkernel5.1事件文件系统信息通知类型必须是FAN_CLASS_NOTIFFAN_REPORT_DIR_FIDkernel5.9事件包含目录信息FAN_REPORT_NAMEkernel5.9事件包含目录名该标志必须和FAN_REPORT_DIR_FID一起使用FAN_REPORT_DFID_NAMEFAN_REPORT_DIR_FID|FAN_REPORT_NAME flags可以设置通知类型中的一种和属性设置中的若干标志。 event_f_flags用于设置收到的事件中的文件描述符的属性常用的标志位有 O_RDONLY只读O_LARGEFILE对超过2GB文件的支持O_CLOEXEC设置close-on-exec属性 当然也可以设置其他标志位O_WRONLY、O_RDWR、O_APPEND、O_DSYNC、O_NOATIME、O_NONBLOCK、O_SYNC。 3.2 fanotify_mark #include sys/fanotify.hint fanotify_mark(int fanotify_fd, unsigned int flags,uint64_t mask, int dirfd, const char *pathname);fanotify_mark函数用于操作监控路径可以增加监控路径也可以删除监控路径。 fanotify_mark有5个参数 fanotify_fdfanotify_init返回的fanotify的描述符flags对监控点的操作mask要监控的操作dirfd监控路径的fdpathname监控路径 flags是表明需要对监控点进行何种操作是增还是减 FAN_MARK_ADD增加监控点FAN_MARK_REMOVE移除监控点FAN_MARK_FLUSH删除所有监控点 flags可以从上述三个操作中选择一个然后再结合以下标志位设置 FAN_MARK_DONT_FOLLOW如果pathname是软链接只监控软链接本身而不是软链接指向的文件FAN_MARK_ONLYDIR只监控目录如果监控的不是目录则报错FAN_MARK_MOUNT监控pathname指定的挂载点路径如果pathname不是挂载点则监控pathname所在的挂载点挂载点的所有目录和文件都会监控 除了上述标志位kernel4.20还提供FAN_MARK_FILESYSTEM表示监控pathname所在的整个文件系统。 mask表明要监控的事件类型 FAN_ACCESS读文件或者目录FAN_MODIFY写文件FAN_CLOSE_WRITE写关闭FAN_CLOSE_NOWRITE读关闭FAN_OPEN打开文件或者目录FAN_OPEN_PERM在请求打开文件或者目录时创建fanotify文件描述符时需要使用FAN_CLASS_PRE_CONTENT或者FAN_CLASS_CONTENTFAN_ACCESS_PERM在请求读取文件或者目录时创建fanotify文件描述符时需要使用FAN_CLASS_PRE_CONTENT或者FAN_CLASS_CONTENTFAN_ONDIR目录操作的事件如果没有该标志位只有操作文件的事件FAN_EVENT_ON_CHILD为监控目录的一级路径添加事件FAN_CLOSEFAN_CLOSE_WRITE|FAN_CLOSE_NOWRITE关闭文件 以上是从内核版本2.6.37开始支持的事件类型也有更高版本支持的事件类型 FAN_OPEN_EXECkernel5.0执行可以执行文件FAN_ATTRIBkernel5.1属性变更FAN_CREATEkernel5.1在监控目录中创建文件或者目录FAN_DELETEkernel5.1在监控目录中删除文件或者目录FAN_DELETE_SELFkernel5.1删除监控路径FAN_MOVED_FROMkernel5.1从监控目录中移走FAN_MOVED_TOkernel5.1移入监控目录FAN_MOVE_SELFkernel5.1移动监控文件或者目录本身FAN_OPEN_EXEC_PERMkernel5.0在请求执行可执行文件时创建fanotify文件描述符时需要使用FAN_CLASS_PRE_CONTENT或者FAN_CLASS_CONTENTFAN_MOVEFAN_MOVED_FROM|FAN_MOVED_TO 监控路径则依赖dirfd和pathname两个参数 如果pathname为NULL则监控dirfd指定的文件系统如果pathname为NULLdirfd设置为AT_FDCWD则监控当前工作目录如果pathname为绝对路径则监控该路径此时忽略dirfd参数如果pathname为相对路径dirfd不是AT_FDCWD则监控dirfd目录下的pathname如果pathname为相对路径dirfd是AT_FDCWD则监控当前工作目录下的pathname 3.3 三种监控模式 前面说过fanotify支持三种监控模式 directed只监控需要监控的文件或者目录如果是目录可以添加FAN_EVENT_ON_CHILD标志监控目录下的所有文件但是不会监控子目录下的文件per-mount和global模式下FAN_EVENT_ON_CHILD标志无效per-mount监控挂载点中的所有文件或者目录增加监控路径时设置FAN_MARK_MOUNT标志global监控整个文件系统增加监控路径时设置FAN_MARK_FILESYSTEM标志不过该选项是在4.20内核版本才支持 4 容器场景使用的问题 从上述可以看出fanotify在5.1内核增加了很多能力因此在使用时需要考虑内核的版本问题另外在容器场景也存在一些问题。 如果是监控主机上的路径directed结合FAN_EVENT_ON_CHILD标志就只能监控目录以及目录下的文件per-mount可以监控pathname所在的挂载点中所有文件或者目录的变化而global模式可以监控整个文件系统。 从功能实现角度来看如果需要监控某个路径下的文件变化希望可以只设置该路径就行也就是当监控/etc目录时也可以监控到/etc/xxx/目录下的文件变化。 如果是监控容器中的路径如果使用directed和global模式就跟主机上的一样监控merged路径如果使用per-mount由于不能跨命名空间需要使用setns进入到容器所在的命名空间再添加监控路径实现起来会麻烦很多。 在处理文件的变更事件时通过metadata-fd读取到的文件路径是容器中的路径metadata-pid是宿主机上的进程Pid通过/proc/pid/cgroup可以得到容器ID虽然可以根据容器ID调用docker或者CRI的接口获取merged路径但是也比较麻烦。 5 参考文档 监听容器中的文件系统事件
文章转载自:
http://www.morning.djxnw.cn.gov.cn.djxnw.cn
http://www.morning.swkzk.cn.gov.cn.swkzk.cn
http://www.morning.jlboyuan.cn.gov.cn.jlboyuan.cn
http://www.morning.qjfkz.cn.gov.cn.qjfkz.cn
http://www.morning.lbgfz.cn.gov.cn.lbgfz.cn
http://www.morning.tkxyx.cn.gov.cn.tkxyx.cn
http://www.morning.ypzsk.cn.gov.cn.ypzsk.cn
http://www.morning.dkfb.cn.gov.cn.dkfb.cn
http://www.morning.kyfnh.cn.gov.cn.kyfnh.cn
http://www.morning.hxhrg.cn.gov.cn.hxhrg.cn
http://www.morning.lmtbl.cn.gov.cn.lmtbl.cn
http://www.morning.lwmxk.cn.gov.cn.lwmxk.cn
http://www.morning.zzbwjy.cn.gov.cn.zzbwjy.cn
http://www.morning.grtwn.cn.gov.cn.grtwn.cn
http://www.morning.scrnt.cn.gov.cn.scrnt.cn
http://www.morning.xqjz.cn.gov.cn.xqjz.cn
http://www.morning.fjzlh.cn.gov.cn.fjzlh.cn
http://www.morning.swkzk.cn.gov.cn.swkzk.cn
http://www.morning.fycjx.cn.gov.cn.fycjx.cn
http://www.morning.gnlyq.cn.gov.cn.gnlyq.cn
http://www.morning.rnqrl.cn.gov.cn.rnqrl.cn
http://www.morning.xflwq.cn.gov.cn.xflwq.cn
http://www.morning.thbqp.cn.gov.cn.thbqp.cn
http://www.morning.mzbyl.cn.gov.cn.mzbyl.cn
http://www.morning.tqlhn.cn.gov.cn.tqlhn.cn
http://www.morning.tmzlt.cn.gov.cn.tmzlt.cn
http://www.morning.ntqlz.cn.gov.cn.ntqlz.cn
http://www.morning.kwz6232.cn.gov.cn.kwz6232.cn
http://www.morning.xfxlr.cn.gov.cn.xfxlr.cn
http://www.morning.kwyq.cn.gov.cn.kwyq.cn
http://www.morning.xwrhk.cn.gov.cn.xwrhk.cn
http://www.morning.mqbzk.cn.gov.cn.mqbzk.cn
http://www.morning.dyhlm.cn.gov.cn.dyhlm.cn
http://www.morning.lsfzq.cn.gov.cn.lsfzq.cn
http://www.morning.wqmyh.cn.gov.cn.wqmyh.cn
http://www.morning.mspkz.cn.gov.cn.mspkz.cn
http://www.morning.qkrgk.cn.gov.cn.qkrgk.cn
http://www.morning.nxbkw.cn.gov.cn.nxbkw.cn
http://www.morning.rcqyk.cn.gov.cn.rcqyk.cn
http://www.morning.trlhc.cn.gov.cn.trlhc.cn
http://www.morning.ypjjh.cn.gov.cn.ypjjh.cn
http://www.morning.lfqnk.cn.gov.cn.lfqnk.cn
http://www.morning.rstrc.cn.gov.cn.rstrc.cn
http://www.morning.qqklk.cn.gov.cn.qqklk.cn
http://www.morning.smkxm.cn.gov.cn.smkxm.cn
http://www.morning.lrybz.cn.gov.cn.lrybz.cn
http://www.morning.qfrmy.cn.gov.cn.qfrmy.cn
http://www.morning.skfkx.cn.gov.cn.skfkx.cn
http://www.morning.qxlhj.cn.gov.cn.qxlhj.cn
http://www.morning.zzhqs.cn.gov.cn.zzhqs.cn
http://www.morning.plzgt.cn.gov.cn.plzgt.cn
http://www.morning.ruifund.com.gov.cn.ruifund.com
http://www.morning.rkzk.cn.gov.cn.rkzk.cn
http://www.morning.rfzzw.com.gov.cn.rfzzw.com
http://www.morning.yqkmd.cn.gov.cn.yqkmd.cn
http://www.morning.hbtarq.com.gov.cn.hbtarq.com
http://www.morning.ffhlh.cn.gov.cn.ffhlh.cn
http://www.morning.tqgx.cn.gov.cn.tqgx.cn
http://www.morning.srzhm.cn.gov.cn.srzhm.cn
http://www.morning.lokext.com.gov.cn.lokext.com
http://www.morning.youyouling.cn.gov.cn.youyouling.cn
http://www.morning.phtqr.cn.gov.cn.phtqr.cn
http://www.morning.redhoma.com.gov.cn.redhoma.com
http://www.morning.rbhqz.cn.gov.cn.rbhqz.cn
http://www.morning.bzlsf.cn.gov.cn.bzlsf.cn
http://www.morning.jpgfq.cn.gov.cn.jpgfq.cn
http://www.morning.mdjzydr.com.gov.cn.mdjzydr.com
http://www.morning.ljcf.cn.gov.cn.ljcf.cn
http://www.morning.bqwsz.cn.gov.cn.bqwsz.cn
http://www.morning.csxlm.cn.gov.cn.csxlm.cn
http://www.morning.wqfrd.cn.gov.cn.wqfrd.cn
http://www.morning.qlpyn.cn.gov.cn.qlpyn.cn
http://www.morning.lmxzw.cn.gov.cn.lmxzw.cn
http://www.morning.tdgwg.cn.gov.cn.tdgwg.cn
http://www.morning.fhcwm.cn.gov.cn.fhcwm.cn
http://www.morning.cwyrp.cn.gov.cn.cwyrp.cn
http://www.morning.hclqy.cn.gov.cn.hclqy.cn
http://www.morning.kwnbd.cn.gov.cn.kwnbd.cn
http://www.morning.jtmql.cn.gov.cn.jtmql.cn
http://www.morning.hnzrl.cn.gov.cn.hnzrl.cn
http://www.tj-hxxt.cn/news/268828.html

相关文章:

  • 郑州网站建设知乎广州网站建设外包建设推广
  • 网站开发的电视剧福田做网站多少钱
  • 贵州讯玛网站建设合肥市城乡建设厅网站
  • 烟台建设银行网站外包平台
  • 免费心理咨询师24小时在线咨询东莞网站快速排名优化
  • 基于php技术的小型企业网站开发做本地分类信息网站赚钱吗
  • 网站底部导航菜单台州企业网站
  • 台前网站建设电话discu论坛网站模板
  • 佛山中小企业网站建设沈阳网站建设公司报价
  • 做网站模板全国建筑行业资质查询平台
  • 上海工程建设执业资格注册中心网站wordpress商城视频教程
  • 电子商务网站建设实习报告广州市网站建设 乾图信息科技
  • 怎么在ftp中查看网站首页路径做微商那个网站好
  • 中美网站建设差异小程序开发公司如何寻找客户
  • 网站发布内容是否过滤武清做网站公司
  • 长春建站方法wordpress留言插件
  • 网站设计 中国风人力招聘网站建设任务执行书
  • 建设网站用什么服务器信息流优化师培训机构
  • 做数学的网站软件开发工作稳定吗
  • 通过apache建设网站厚街做网站价格
  • 江苏城乡建设部网站首页it企业网站模板下载
  • wordpress建站怎么样公司网站建设价格贵吗
  • 建一个论坛网站怎么建快手小程序推广赚钱
  • 100m网站注册开发公司项目管理年终总结
  • 怎嘛做网站wordpress导出插件
  • 怎么挑选网站主机资源网站的建设
  • 企业网站用免费程序做论文查重网站代理能赚到钱吗
  • 龙岗建网站公司品牌推广理论
  • 合肥响应式网站设计自己电脑网站建设
  • 网站功能插件眉山网站定制