flu*_*mpb 14 monitoring system-information proc
是否需要访问硬盘驱动器还是所有操作都在内存中完成?基本上我想不断从 meminfo 和 cpuinfo 获取更新的值。
我是否需要重新打开文件然后重新读取才能获得更新的值,还是可以重新读取?我目前无法访问 Linux 安装。
Gil*_*il' 14
当您从 中读取时/proc,内核会即时生成内容。不涉及硬盘驱动器。
您所做的与许多监控程序所做的相似,因此我建议您查看它们在做什么。例如,您可以看到 top 的作用:
strace top >/dev/null
Run Code Online (Sandbox Code Playgroud)
跟踪显示顶部打开/proc/uptime,/proc/loadavg,/proc/stat和/proc/meminfo一劳永逸。对于除 之外的所有这些文件/proc/uptime,top 会返回到(虚拟)文件的开头并在每次刷新显示时再次读取。
里面的大部分数据/proc/cpuinfo是不变的,但是一些字段比如一些机器上的CPU速度是动态更新的。
proc 文件系统记录在内核文档中,Documentation/filesystems/proc.txt. 如果您对某些深奥的细节感到绝望,可以浏览源代码。
/proc 文件系统是所谓的“伪文件系统”,这意味着(afaiu)没有磁盘使用。
我不太确定这在最低级别是如何工作的,所以我可能是错的,但这里是。如果我跑
f = open('/proc/meminfo')
f.read()
f.seek(0)
f.read()
Run Code Online (Sandbox Code Playgroud)
我得到两个不同的输出。Afaik,seek(0) 只重置读取偏移量,它不会重新打开文件。这表明重新读取文件足以获得新值。
也就是说,如果您正在为 Linux 开发,那么永久访问 Linux box 似乎是一件非常合乎逻辑的事情......
| 归档时间: |
|
| 查看次数: |
10026 次 |
| 最近记录: |