用于磁盘 I/O 的 `htop`?

wua*_*94 5 process ssh files disk

我正在寻找一种ssh工具来显示哪个进程正在读取/写入哪个文件。

示例输出:

pid(或类似 htop 命令)| 读取 mb/s | 写 mb/s | 路径/到/file.txt

Nas*_*ley 8

iotop是我首先推荐的。您可以使用-o标志更精确。请记住,如果您使用 CentOS 和最新内核版本之一,则必须编辑以下部分/usr/lib/python2.7/site-packages/iotop/data.py

def parse_proc_pid_status(pid):
    result_dict = {}
    try:
        for line in open('/proc/%d/status' % pid):
            if not line.strip(): continue
            key, value = line.split(':\t', 1)
            result_dict[key] = value.strip()
    except IOError:
        pass  # No such process
Run Code Online (Sandbox Code Playgroud)

添加说: 的行if not line.strip(): continue

您还可以使用以下fuser方式显示访问文件的进程:

fuser -v -m <file>
Run Code Online (Sandbox Code Playgroud)

它只是不会显示进程是否正在写入。

您还可以lsof在文件本身上使用或通过管道将文件名或进程输入到 grep 中。

lsof /path/to/file
lsof | grep <filename>
lsof | grep <process>
Run Code Online (Sandbox Code Playgroud)

要获得您想要的内容,您将不得不使用组合,除非您已经知道要写入的文件并且只想查看写入该文件的进程。