Linux(入门基础):95---查看进程使用的文件(命令: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这个进程)

USER 此进程的用户
PID 此进程的PID
ACCESS

有很多种不同的意思

c:此进程在当前的目录下(非子目录)

e:此进程可被触发为可执行的状态

f:是一个被开启的文件

r:代表顶层目录(root directory)

F:该文件被使用了,不过在等待响应中

m:可能为共享的动态函数库

COMMAND 开启此进程的命令

4.查看文件系统

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

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

  • 案例二:查看/home这个文件系统有哪些进程正在使用(/home已经被挂在)
  • 第一步:查看自己当前bash进程的PID号

 

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

  • 第三步:如果我们使用umount /home去卸载这个/home目录会提示/home is busy,不让挂载。因为有进程正在使用这个目录
  • 第四步:我们使用fuser  -mki  /home去给使用/home目录的进程一个-9信号,删除这些进程,并提示你是否要删除进程。此处我们当前全选n,因为都是测试而已,不是真的要删除这些进程

5.查看文件

  • 查看/run下面属于FIFO类型的文件,并且找出读取该文件的进程有哪些(通常系统的FIFO类型的文件都放置到/run下面,通过这个方式来追踪该文件被读取的进程)
  • 第一步:查看/run目录下面FIFO类型的文件有哪些,并从里面随便挑选一个

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

二、lsof命令

1.功能

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

2.命令格式

  • lsof  [-aUu]  [+d]

相关参数与选项

  • -a:多项数据需要【同时成立】才显示出结果时使用
  • -U:仅列出UNIX-like修通的socket文件类型
  • -u:后面接用户名,列出该使用者相关所使用的文件
  • +d:后面接目录,即找出某个目录下面已经被使用的文件

3.演示案例

  • 案例一:查看所有的进程,每个进程分别使用什么文件
  • 查询的结果很多,NAME为使用的文件/目录。可以看到system系统进程使用所有的文件

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

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

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

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

三、pidof命令

1.功能

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

2.命令格式

  • pidof   [-sx]   进程名

相关参数与选项

  • -s:仅列出一个PID而不列出所有的PID
  • -x:同时列出该进程可能的PPID那个进程的PID

3.演示案例

  • 案例一:查看系统上面进程的PID
  • 查看init与rsyslogd这两个进程的PID(其中名为init的有两个进程)

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

猜你喜欢

转载自blog.csdn.net/qq_41453285/article/details/88409849