Linux 之 进程管理 -- 几个进程相关指令(结尾)
2019-10-12 本文已影响0人
熊猫人和熊猫猫
这里继续学习几个与进程相关的指令
查询已开启文件或已执行进程开启之文件
1. 藉由文件(或文件系统)找出正在使用该文件的进程 fuser
有的时候我想要知道我的进程到底在这次启动过程中开启了多少文件,可以利用fuser
来观察
工作模式: fuser -[-umv] [-k[i][-signal]] file/dir
选项与参数:
-
-u
除了进程的PID之外,同时列出该进程的拥有者 -
-m
后面接的那个档名会主动的上提到该文件系统的最顶层,对umount
不成功很有效 -
-v
可以列出每个文件与进程还有指令的完整相关性 -
-k
找出使用该文件/目录的PID,并试图以SIGKILL这个讯号给予该PID -
-i
必须与-k
配合,在删除PID之前会先询问使用者意愿 -
-signal
例如-1
-15
等等,如果不加的话,预设是-9(SIGKILL)
还是要举例喽~
fuser藉由文件找出正在使用该文件的进程
下面解释一下fuser -uv .
的输出结果
首先把fuser -uv .
翻译成人话:列出使用当前目录的进程及其所属账号
可以看出,当前目录下有两个进程(PID 13888 和 31743),该进程属于root,且指令为bash。ACCESS项目下的c
代表啥含义?
-
c
:此进程在当前的目录下(非次目录) -
e
:可被触发为执行状态 -
f
:是一个被开启的文件 -
r
:代表顶层目录(root directory) -
F
该文件被开启了,不过在等待回应中 -
m
可能为分享的动态函式库
fuser
不仅可以针对整个文件系统,还可以针对单一文件,拿鸟哥的图举例
fuser查看单一文件
2. 列出被进程所开启的文件档名 lsof
相对于fuser
是由文件或者装置去找出使用该文件或装置的进程,losf
则是可以查出某个进程开启或者使用的文件与装置。
工作模式: lsof [-aUu] [+d]
选项与参数:
-
-a
多项数据需要(同时成立)才显示出结果时 -
-U
仅列出Unix like系统的socket文件类型 -
-u
后面接 username,列出该使用和相关进程所开启的文件 -
+d
后面接目录,亦即找出某个目录底下已经被开启的文件
列出目前系统上面所有的被启动的周边装置(linux中的装置都存放在/dev目录里面,因此直接搜寻目录就可以)lsof +d /dev
列出目前系统上面所有的被启动的周边装置
列出root 的bash这支程序所开启的文件lsof -u root | grep bash
列出属于root的bash这支程序所开启的文件
3.找出某支正在执行的程序的PID pidof
工作模式:
pidof [-sx] program_name
选项与参数:
-
-s
仅列出一个PID而不列出所有的PID -
-x
同时列出该program name可能的PPID那个进程的PID
例如,我们想要查看目前系统上面systemd 以及 rsyslogd这两个程序的PID
可以使用这个指令pidof systemd rsyslogd
拿鸟哥的图理解
列出systmed以及rsyslogd这两个程序的PID
postscript
啊啊啊~前段日子学习linux有点走火入魔啊,原本只是想了解一下变量和shell script,结果被好奇心噼里啪啦得带到这里,甚至和计算机硬件打起交道。原来,只有彻头彻尾得了解计算机的硬件和操作系统结构,才能帮助我们更好利用它呢。
我从一个八竿子打不着的生物专业爬到《鸟哥的Linux私房菜》,偷窥Linux操作系统,被“陌生”、“冷冰冰”的一系列计算机硬件名词吓了一跳,也终于意识到自己该到此为止了~
以后有继续深入学习Linux的需要时,再来这个专题发文章吧,猫毛在这里暂且Linux学习说再见,我们下个专题见~~