怎么查看某个进程正在读写的全部文件路径?

已举报 回答
怎么查看某个进程正在读写的全部文件路径?
问在线客服
扫码问在线客服
  • 回答数

    6

  • 浏览数

    4,224

6个回答 默认排序
  • 默认排序
  • 按时间排序

已采纳
1、查看进程“打开”的文件(方法1):
要查找某个特定进程正在打开的文件,可以按照以下步骤进行操作:
1)使用"pidof"命令来获取该进程的进程标识符(PID)。
"pidof"是一个命令行工具,用于检索指定名称的进程。
例如,要查找名为"programe-name"的进程,可以使用以下命令:
"pidof programe-name"
或者
"ps -aux | grep programe-name"
这将返回与目标进程相关的PID。
2)使用"cd /proc/$PID/fd"来访问该进程打开的文件描述符。
在进入该目录后,您将能够看到与该进程关联的文件描述符。
3)使用"ls -l"命令来获取实际指向这些文件描述符所对应的实际文件信息。
您将得到当前正在被该进程打开的文件列表。
2、查看进程“打开”的文件(方法2):
如果需要了解某个特定进程正在打开哪些文件,
可以采取以下步骤:
1)使用"lsof -c programe-name"或"lsof -p $PID"
命令来获取该进程正在打开的所有文件。
这些命令会列出与目标进程相关的所有文件描述符。
请注意,在使用这些命令时,您需要确保目标进程正在运行,并且具有足够的权限来访问该进程的文件。
取消 评论
如何查看进程 IO 读写情况

Linux Kernel 2.6.20 以上的内核支持进程 IO 统计,可以用类似 iotop 这样的工具来监测每个进程对 IO 操作的情况,就像用 top 来实时查看进程内存、CPU 等占用情况那样。但是对于 2.6.20 以下的 Linux 内核版本就没那么幸运了,根据 Stack Overflow 的这篇回帖 给出的方法,写了一个简单的 Python 脚本用来在 linux kernel 2.6.20 下打印进程 IO 状况。
Kernel 2.6.20

这个脚本的想法很简单,把 dmesg 的结果重定向到一个文件后再解析出来,每隔1秒钟打印一次进程 IO 读写的统计信息,执行这个脚本需要 root:
#!/usr/bin/python
# Monitoring per-process disk I/O activity
# written by http://www.vpsee.com

import sys, os, time, signal, re

class DiskIO:
def __init__(self, pname=None, pid=None, reads=0, writes=0):
self.pname = pname
self.pid = pid
self.reads = 0
self.writes = 0

def main():
argc = len(sys.argv)
if argc != 1:
print usage: ./iotop
sys.exit(0)

if os.getuid() != 0:
print must be run as root
sys.exit(0)

signal.signal(signal.SIGINT, signal_handler)
os.system('echo 1 /proc/sys/vm/block_dump')
print TASK PID READ WRITE
while True:
os.system('dmesg -c /tmp/diskio.log')
l = []
f = open('/tmp/diskio.log', 'r')
line = f.readline()
while line:
m = re.match(\
'^(\S+)\((\d+)\): (READ|WRITE) block (\d+) on (\S+)', line)
if m != None:
if not l:
l.append(DiskIO(m.group(1), m.group(2)))
line = f.readline()
continue
found = False
for item in l:
if item.pid == m.group(2):
found = True
if m.group(3) == READ:
item.reads = item.reads + 1
elif m.group(3) == WRITE:
item.writes = item.writes + 1
if not found:
l.append(DiskIO(m.group(1), m.group(2)))
line = f.readline()
time.sleep(1)
for item in l:
print %-10s %10s %10d %10d % \
(item.pname, item.pid, item.reads, item.writes)

def signal_handler(signal, frame):
os.system('echo 0 /proc/sys/vm/block_dump')
sys.exit(0)

if __name__==__main__:
main()
Kernel = 2.6.20

如果想用 iotop 来实时查看进程 IO 活动状况的话,需要下载和升级新内核(2.6.20 或以上版本)。编译新内核时需要打开 TASK_DELAY_ACCT 和 TASK_IO_ACCOUNTING 选项。解压内核后进入配置界面:
# tar jxvf linux-2.6.30.5.tar.bz2
# mv linux-2.6.30.5 /usr/src/
# cd /usr/src/linux-2.6.30.5

# make menuconfig
选择 Kernel hacking – Collect scheduler debugging info 和 Collect scheduler statistics,保存内核后编译内核:
# make; make modules; make modules_install; make install
修改 grub,确认能正确启动新内核:
# vi /boot/grub/menu.lst
出了新内核外,iotop 还需要 Python 2.5 或以上才能运行,所以如果当前 Python 是 2.4 的话需要下载和安装最新的 Python 包。这里使用源代码编译安装:
# tar jxvf Python-2.6.2.tar.bz2
# cd Python-2.6.2
# ./configure
# make; make install
别忘了下载 setuptools:
# mv setuptools-0.6c9-py2.6.egg.sh setuptools-0.6c9-py2.6.egg
# sh setuptools-0.6c9-py2.6.egg
取消 评论
这个好像没有,只有查看CPU和内存使用情况的。
取消 评论
方法一:PS
在ps命令中,“-T”选项可以开启线程查看。下面的命令列出了由进程号为pid的进程创建的所有线程。
$ ps -T -p pid
“SID”栏表示线程ID,而“CMD”栏则显示了线程名称。
方法二: Top
top命令可以实时显示各个线程情况。要在top输出中开启线程查看,请调用top命令的“-H”选项,该选项会列出所有Linux线程。在top运行时,你也可以通过按“H”键将线程查看模式切换为开或关。
$ top -H
要让top输出某个特定进程pid并检查该进程内运行的线程状况:
$ top -H -p pid
取消 评论
右击-属性
取消 评论
windowsxp不能看 以前我用xp都是单独装了vista的任务管理器才看的
取消 评论
ZOL问答 > 怎么查看某个进程正在读写的全部文件路径?

举报

感谢您为社区的和谐贡献力量请选择举报类型

举报成功

经过核实后将会做出处理
感谢您为社区和谐做出贡献

扫码参与新品0元试用
晒单、顶楼豪礼等你拿

扫一扫,关注我们
提示

确定要取消此次报名,退出该活动?