今天突然看到一个问题,如何查看一个进程打开的文件?
我脑子里的第一个想法就是,肯定和pcb有关,于是就是看了操作系统课本。看到了这样一段话。
此外还需要为进程设置数据结构,用来描述进程的状态信息、本身的属性、对资源的占用及调度信息等,
称为进程控制块,简称PCB(Process Control Block)
对资源的占用,这不正是看打开文件的地方吗?后来发现主要有两种方法
- 使用lsof命令
- 进入/proc目录中查看
首先我们来明确一下在linux系统中,那些东西可以被当作文件打开。
1.普通的文件,
2.目录
3.网络文件系统的文件,
4.字符设备文件
5.(函数)共享库
6.管道,命名管道
7.符号链接
8.底层的socket字流,网络socket,unix域名socket
9.在linux里面,大部分的东西都是被当做文件的……还有其他很多
使用lsof命令
可以通过
losf -p xxx
的方式来指定进程号,查看该进程打开的文件。
进入/proc目录中查看
首先我们进入proc目录
可以看到很多的数字,这里的数字就是进程号,选择我们想看的进程,进入,并使用ls -l列出fd目录下的全部文件即可