我正在寻找一个ssh
工具来显示哪个进程正在读取/写入哪个文件。
输出示例:
pid(或类似 htop 命令)|读取 mb/s |写入 mb/s |路径/到/file.txt
答案1
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
添加一行:if not line.strip(): continue
。
您还可以使用fuser
以下命令来显示访问文件的进程:
fuser -v -m <file>
它只是不会显示该进程是否正在写入它。
您还可以lsof
在文件本身上使用,或者通过管道输入 grep 来获取文件名或进程。
lsof /path/to/file
lsof | grep <filename>
lsof | grep <process>
为了准确地获得您想要的内容,您将必须使用组合,除非您已经知道正在写入的文件并且您只想查看写入该文件的进程。