监控进程使用轮询或选择装载



我正试图想出一个脚本,该脚本将监视/proc/mounts,并在检测到只读文件系统时通知它。

在python中,一种方法是将/proc/mounts的值存储在一个列表中,并在循环中继续执行cat /proc/mounts,并检查";ro";实体。但我想用投票或选择来代替这个,因为这很有效,而且只有在事件发生时才采取行动。

我认为投票比选择更可取。据我所知,我们可以将/proc/mounts的fd放在exceptfds中进行选择,当出现异常时,我们会收到通知(请在这里纠正我,行中的更改会作为异常发出信号?(。只是为了测试,我正在一个常规文件上尝试它——现在,当我打开并更改e.txt时,这个文件会打印整个文件吗?目前还没有。我错过了什么?

import select
f = open("e.txt")
while True:
r,w,x = select.select([],[],[f])
f.seek(0)
print f.read()
< check for ro entity and do further>

对于/proc/mounts监控:

import select
f = open("/proc/mounts")
while True:
r,w,x = select.select([],[],[f])
f.seek(0)
print f.read()
< check for ro entity and do further>

我如何使用选择或投票来实现这一点。

这确实适用于/proc/mounts监控。对行的任何更改都被视为异常,因此将/proc/mounts的fd添加到exceptfds(这是select.select([],[],[f])选择中的第三个参数(

import select
f = open("e.txt")
while True:
r,w,x = select.select([],[],[f])
f.seek(0)
print f.read()

最新更新