psmisc工具

来源:互联网 发布:数据库搭建步骤 编辑:程序博客网 时间:2024/04/27 14:30

Psmisc软件包包含三个帮助管理/proc目录的程序。

fuser 显示使用指定文件或者文件系统的进程的PID。
killall 杀死某个名字的进程,它向运行指定命令的所有进程发出信号。
pstree 树型显示当前运行的进程。

安装

centos下使用yum安装

yum install psmisc

官方网址 https://sourceforge.net/projects/psmisc/files/

pstree

功能说明:以树状图显示程序。
语  法:pstree [-acGhlnpuUV][-H <程序识别码>][<程序识别码>/<用户名称>]
pstree指令用ASCII字符显示树状结构,清楚地表达程序间的相互关系。如果不指定程序识别码或用户名称,则会把系统启动时的第一个程序视为基层,并显示之后的所有程序。若指定用户名称,便会以隶属该用户的第一个程序当作基层,然后显示该用户的所有程序。
参  数:
  -a  显示每个程序的完整指令,包含路径,参数或是常驻服务的标示。
  -c  不使用精简标示法。
  -G  使用VT100终端机的列绘图字符。
  -h  列出树状图时,特别标明现在执行的程序。
  -H<程序识别码>  此参数的效果和指定”-h”参数类似,但特别标明指定的程序。
  -l  采用长列格式显示树状图。
  -n  用程序识别码排序。预设是以程序名称来排序。
-p  显示程序识别码。会显示程序id
  -u  显示用户名称。
  -U  使用UTF-8列绘图字符。
  -V  显示版本信息。

killall

killall用于杀死指定名字的进程(kill processes by name)。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一
格式:killall 【command-name】

fuser

fuser命令是用来显示所有正在使用着指定的file, file system 或者 sockets的进程信息。

常用选项
-a 显示所有命令行中指定的文件,默认情况下被访问的文件才会被显示。
-c 和-m一样,用于POSIX兼容。
-k 杀掉访问文件的进程。如果没有指定-signal就会发送SIGKILL信号。
-i 杀掉进程之前询问用户,如果没有-k这个选项会被忽略。
-l 列出所有已知的信号名称。
-m name 指定一个挂载文件系统上的文件或者被挂载的块设备(名称name)。这样所有访问这个文件或者文件系统的进程都会被列出来。如果指定的是一个目录会自动转换成”name/”,并使用所有挂载在那个目录下面的文件系统。
-n space 指定一个不同的命名空间(space).这里支持不同的空间文件(文件名,此处默认)、tcp(本地tcp端口)、udp(本地udp端口)。对于端口, 可以指定端口号或者名称,如果不会引起歧义那么可以使用简单表示的形式,例如:name/space (即形如:80/tcp之类的表示)。
-s 静默模式,这时候-u,-v会被忽略。-a不能和-s一起使用。
-signal 使用指定的信号,而不是用SIGKILL来杀掉进程。可以通过名称或者号码来表示信号(例如-HUP,-1),这个选项要和-k一起使用,否则会被忽略。
-u 在每个PID后面添加进程拥有者的用户名称。
-v 详细模式。输出似ps命令的输出,包含PID,USER,COMMAND等许多域,如果是内核访问的那么PID为kernel. -V 输出版本号。
-4 使用IPV4套接字,不能和-6一起应用,只在-n的tcp和udp的命名存在时不被忽略。
-6 使用IPV6套接字,不能和-4一起应用,只在-n的tcp和udp的命名存在时不被忽略。
- 重置所有的选项,把信号设置为SIGKILL.

$ fuser -um /dev/sda2
/dev/sda2: 6378c(quietheart) 6534c(quietheart) 6628(quietheart)
6653c(quietheart) 7429c(quietheart) 7549c(quietheart) 7608c(quietheart)

fuser显示使用指定文件或者文件系统的进程ID.默认情况下每个文件名后面跟一个字母表示访问类型。
访问类型如下:
c 代表当前目录
e 将此文件作为程序的可执行对象使用
f 打开的文件。默认不显示。
F 打开的文件,用于写操作。默认不显示。
r 根目录。
m 映射文件或者共享库。
s 将此文件作为共享库(或其他可装载对象)使用

查看那些程序使用tcp的80端口

$fuser -v -n tcp 80

$fuser -v 80/tcp

用 -l参数可以列出fuser所知的信号

$fuser -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH >IO PWR SYS UNUSED

发送信号
fuser可以发送它已知的信号给访问的指定文件进程而代替-k参数默认发送的SIGKILL,例如:只是挂起进程,那么发送HUP信号就可以了

$fuser -v /root/install.log
用户 进程号 权限 命令
/root/install.log: root 3347 f…. tail

$fuser -k -SIGHUP /root/install.log
/root/install.log: 3347

$ fuser -v /root/install.log

0 0