天天看点

查看进程使用的文件(命令:fuser、lsof、pidof)

一、fuser命令

1.功能

查看该文件/文件系统被哪些进程所使用,重点在查看进程

2.命令格式

fuser   [-umv]   [-k [i]  [信号]]    文件/目录
           

相关参数与选项

-u:除了列出进程的PID之外,还列出该进程的拥有者

-m:后面接的那个文件名会主动地上提到该文件系统的最顶层,对umount不成功有效

-v:可以列出每个文件与进程还有命令的完整相关性

-k:找出使用该文件/目录的进程,并试图以-9这个信号给予该进程(就是终止正在使用这个文件的进程)

-i:必须与-k配合使用,在删除PID之前会先询问使用者的意愿

信号:就是前面提到过的信号,-1、-15等,若不加的话,默认为-9

3.查看目录

查看当前目录正在被哪些进程在使用

可以看到目前的路径为dongshao用户的家目录,有一个进程在使用(bash这个进程)

查看进程使用的文件(命令:fuser、lsof、pidof)
查看进程使用的文件(命令:fuser、lsof、pidof)

4.查看文件系统

案例一:查看/proc这个目录有哪些进程在使用

第一步:查看/proc这个目录有哪些进程在使用

查看进程使用的文件(命令:fuser、lsof、pidof)

第二步:我们加上-m这个参数查看(可以看到有几个进程在进行/proc文件系统的读取)

查看进程使用的文件(命令:fuser、lsof、pidof)

案例二:查看/home这个文件系统有哪些进程正在使用(/home已经被挂在)

第一步:查看自己当前bash进程的PID号

查看进程使用的文件(命令:fuser、lsof、pidof)

第二步:查看一下/home这个文件系统(可以看到上面那个bash进程也在)

查看进程使用的文件(命令:fuser、lsof、pidof)
查看进程使用的文件(命令:fuser、lsof、pidof)

第三步:如果我们使用umount /home去卸载这个/home目录会提示/home is busy,不让挂载。因为有进程正在使用这个目录

第四步:我们使用fuser -mki /home去给使用/home目录的进程一个-9信号,删除这些进程,并提示你是否要删除进程。此处我们当前全选n,因为都是测试而已,不是真的要删除这些进程

查看进程使用的文件(命令:fuser、lsof、pidof)

5.查看文件

查看/run下面属于FIFO类型的文件,并且找出读取该文件的进程有哪些(通常系统的FIFO类型的文件都放置到/run下面,通过这个方式来追踪该文件被读取的进程)

第一步:查看/run目录下面FIFO类型的文件有哪些,并从里面随便挑选一个

查看进程使用的文件(命令:fuser、lsof、pidof)

第二步:从上面那些FIFO文件中随便挑选一个做测试

查看进程使用的文件(命令:fuser、lsof、pidof)

二、lsof命令

1.功能

查看一个进程使用了哪些文件,重点在查看文件

2.命令格式

lsof  [-aUu]  [+d]
           

相关参数与选项

-a:多项数据需要【同时成立】才显示出结果时使用

-U:仅列出UNIX-like修通的socket文件类型

-u:后面接用户名,列出该使用者相关所使用的文件

+d:后面接目录,即找出某个目录下面已经被使用的文件

3.演示案例

案例一:查看所有的进程,每个进程分别使用什么文件

查询的结果很多,NAME为使用的文件/目录。可以看到system系统进程使用所有的文件

查看进程使用的文件(命令:fuser、lsof、pidof)

案例二:查看仅root的所有进程中所使用socket文件(-a选项的使用)

因为查看的root进程所使用的文件,并且查询的是socket文件,所以需要用-a来连接。如果不用-a显示的结果可能会不正确

查看进程使用的文件(命令:fuser、lsof、pidof)

案例三:查看系统上面所有进程所使用的外接设备文件

查看进程使用的文件(命令:fuser、lsof、pidof)

案例四:查看属于root的bash这个进程所使用的文件

查看进程使用的文件(命令:fuser、lsof、pidof)

三、pidof命令

1.功能

找出某个正在执行的进程的PID

2.命令格式

pidof   [-sx]   进程名
           

相关参数与选项

-s:仅列出一个PID而不列出所有的PID

-x:同时列出该进程可能的PPID那个进程的PID

3.演示案例

案例一:查看系统上面进程的PID

查看init与rsyslogd这两个进程的PID(其中名为init的有两个进程)

查看进程使用的文件(命令:fuser、lsof、pidof)

案例二:查看系统上面bash进程的PID(bash有三个)

查看进程使用的文件(命令:fuser、lsof、pidof)