我正在尝试监视每个进程的磁盘活动。我发现如何执行此操作的一种方法是读取 /proc/pid/io 文件并将字段与之前读取的字段进行比较。工作正常,除了我的监控进程似乎只能读取一些 io 文件(例如它没有读取 apache 的权限)。如何读取别人的io?也许还有更好的方法来实现这个目标?
编辑显然我可以以 root 身份运行该进程,但我想避免这种情况
答案1
使用iotop
。
它应该在您的 Redhat/Centos/Fedora 机器的存储库中可用(如果尚未安装)。
它输出与 类似的信息top
,但您将获得 IO 统计信息(磁盘读取、写入和交换),而不是 CPU/内存统计信息。
-p
您可能-u
会对这些选项--only
感兴趣。
例如,要查看 ID 为 5435 的进程的 IO 活动,请使用:
iotop -p 5435
从man
页面:
-p PID, --pid=PID
A list of processes/threads to monitor (all by default).
-u USER, --user=USER
A list of users to monitor (all by default)
-P, --processes
Only show processes. Normally iotop shows all threads.