pgrep与pkill命令怎么在Linux系统中使用

2022年 10月 18日 发表评论
免费、便宜/高性价比 服务器汇总(已更新):点击这里了解

今天我就来和大家说说在Linux系统中如何使用pgrep和pkill命令,可能很多人都不太懂。为了让大家更好地了解,本站为大家总结了以下内容,希望大家能从这篇文章中有所收获。

pgrep,pkill ndash查找或发信号通知流程传递名称和其他属性。

语法

pgrep[-flvx][-n |-o][-d delim][-P ppid list][-G PGR list][-s sid list][-U euid list][-U uid list][-G GID list][-J projid list][-T term list][-T taskid list][-c ctid list][-z zoneid list][pattern]

PKI ll[-signal][-fvx][-n |-o][-P ppid list][-G PGR list][-s sid list][-U euid list][-U uid list][-G GID list][-J projid list][-T term list][-T taskid list][-c ctid list][-z zoneid list][pattern]

说明PGREP程序检查系统中的活动进程,并报告其进程属性与命令行中指定的条件相匹配的进程的标识。每个进程标识由一个十进制数表示,该十进制数通过一个拆分字符串与下一个标识分开。默认的拆分字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一组逗号分隔的可能值。比如,

代码如下:

pgrep -G其他,守护进程

匹配真实组标识为其他或守护进程的进程。如果分配了多个条件,则根据逻辑“与”规则操作这些匹配条件。比如,

代码如下:

pgrep -G其他,守护进程-U根,守护进程

匹配过程其属性有:

(真实的组标识是其他或守护进程)和(真实的用户标识是根或守护进程)

pkill的功能和pgrep是一样的,只是匹配过程是有信号的,就像用kill(1)替换pgrep的进程ID的输出一样。信号名或信号号可以作为pkill的第一个命令行选项。

选项支持以下选项:支持以下选项:

-c ctidlist只匹配列表中列出id的进程。

-d delim指定在每个匹配的进程标识之间拆分字符串。如果没有指定-d选项,默认为新的行字符。-d选项仅在pgrep命令中有效。

-f正则表达式模式匹配完整的进程参数字符串(从/proc/nnnnn/psinfo文件的pr_psargs字段获得)。如果没有-f选项,表达式只匹配执行文件的名称(从/proc/nnnnn/psinfo文件的pr_fname字段获得)。

-g pgrplist只匹配进程组标识在给定列表中的进程。如果组0包含在列表中,这将被解释为pgrep或pkill进程的组ID。

-G gIDlist只匹配真实组id在给定列表中的进程。每个组标识可以通过使用组名或数字组标识来指定。

-j projilist匹配项目标识在给定列表中的流程。可以使用项目名称或数字项目标识来指定每个项目标识。

-l长格式输出。输出每个匹配进程的名称以及进程标识。进程的名称从pr_psargs或pr_fname字段中获取,具体取决于是否指定了-f选项。-l选项仅在pgrep命令中有效。

-n匹配符合所有其他匹配标准的最新(最近生成的)流程。它不能与-o选项一起使用。

-o匹配满足所有其他匹配标准的最旧(最早生成的)流程。它不能与-n选项一起使用。

-P ppIDlist只匹配给定列表中父进程id的进程。

-s sIDlist只匹配进程会话id在给定列表中的进程。如果ID 0在列表中,这将被解释为pgrep或pikill进程的会话ID。

-t termlist仅匹配与给定列表中的终端相关联的进程。在/dev中,每个终端都被指定为终端设备路径名的后缀。例如term/a或pts/0。

-T taskidlist只匹配给定列表中具有任务id的进程。如果列表中包含ID 0,这将被解释为pgrep或pikill进程的会话ID。

-u euidlist只匹配给定列表中具有有效用户id的进程。每个用户标识可以由登录名或数字用户标识指定。

-U uidlist只匹配给定列表中具有真实用户id的进程。每个用户标识可以由登录名或数字用户标识指定。

-v反向匹配。匹配所有进程,满足匹配条件的除外。

-x只认为进程的参数字符串或执行文件名匹配正确。指定的模式是匹配的过程。当过程字符串中的所有参数都是或可以是时,该模式被认为是准确的

执行文件名称的字符匹配模式。-z zoneidlist 仅匹配区域ID在给定列表中的进程。每一个区域ID可以使用一个区域名称或者一个数字的区域ID指定。这个选项仅在全局区域中执行有效。如果pkill程序用来往其它区域的进程发信号,进城必须宣称{PRIV_PROC_ZONE}特权。-signal 指定发往每一个匹配进程的信号。如果没有指定,SIGTERM 是默认的信号。-signal仅在pkill命令中作为第一个选项有效。信号可以是在signal.h中定义的没有SIG前缀的一个符号名字,也可是一个相应的信号数值。

例子

例子1 获得一个进程ID

获得sendmail的进程ID:

代码如下:

example% pgrep -x -u root sendmail283

例子2 终止一个进程

终止最近生成的xterm:

代码如下:

example% pkill -n xtermExit Status

如下退出值被返回:

0 一个或者多个进程被匹配。1 没有进程被匹配。2 指定了无效的命令行参数。3 出现一个致命的错误。

例子3 用pkill命令踢出在线登录用户由于linux服务器允许多用户登录,公司很多人知道密码,工作造成一定的障碍所以需要有时踢出指定的用户#who 查出当前有那些终端登录(用 w 命令更详细)

#whorootpts/02010-10-2809:36(192.168.1.236)rootpts/22010-10-2809:40(192.168.1.27)rootpts/32010-10-2810:02(192.168.1.82)rootpts/42010-10-2016:06(192.168.1.244)

我想踢出IP为82的登录,其对应的tty为pts/3

#pkill-kill-tpts/3

代码如下:

#whorootpts/02010-10-2809:36(192.168.1.236)rootpts/22010-10-2809:40(192.168.1.27)rootpts/42010-10-2016:06(192.168.1.244)

看完上述内容,你们对pgrep与pkill命令怎么在Linux系统中使用有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

小咸鱼

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: