服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - 简单了解Linux系统中pgrep与pkill命令的使用

简单了解Linux系统中pgrep与pkill命令的使用

2019-06-28 15:10博客教主 Linux

这篇文章主要介绍了简单了解Linux系统中pgrep与pkill命令的使用,这两个命令一般被用来终止进程或者用户登陆,需要的朋友可以参考下

pgrep, pkill – 查找或者发信号给进程通过名称和其它属性。

语法

pgrep [-flvx] [-n | -o] [-d delim] [-P ppidlist] [-g pgrplist] [-s sidlist] [-u euidlist] [-U uidlist] [-G gidlist] [-J projidlist] [-t termlist] [-T taskidlist] [-c ctidlist] [-z zoneidlist] [pattern]

pkill [-signal] [-fvx] [-n | -o] [-P ppidlist] [-g pgrplist] [-s sidlist] [-u euidlist] [-U uidlist] [-G gidlist] [-J projidlist] [-t termlist] [-T taskidlist] [-c ctidlist] [-z zoneidlist] [pattern]


说明
pgrep程序检查在系统的中活动进程,报告进程属性匹配命令行上指定条件的进程的ID。每一个进程ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认的分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合。例如,
 

复制代码
代码如下:

pgrep -G other,daemon

匹配真实组ID是other或者是daemon的进程。如果多个条件被指派,这些匹配条件按逻辑与”AND”规则运算。例如,

复制代码
代码如下:

pgrep -G other,daemon -U root,daemon

匹配进程它的属性是:
(真实的组ID是other或者是daemon) 与 (真实的用户ID是root或者是daemon)
pkill函数和pgrep相同,除了匹配的进程被信号通知就像用kill(1)替代了pgrep的进程ID的输出。一个信号名称或者数字可以作为pkill的第一个命令行选项。

 

选项
支持下面的选项:The following options are supported:
-c ctidlist 仅匹配列表中列出的ID的进程。
-d delim 指定每一个匹配的进程ID之间分割字符串。如果没有 -d 选项指定,默认的是新行字符。-d 选项仅在pgrep命令中有效。
-f正则表达式模式将执行与完全进程参数字符串 (从/proc/nnnnn/psinfo文件的pr_psargs字段获得)匹配。如果没有 -f 选项,表达式仅对执行文件名称(从/proc/nnnnn/psinfo文件pr_fname字段获得)匹配。
-g pgrplist仅匹配进程组ID在给定列表中的进程。如果组0包括在列表中,这个被解释为pgrep或者pkill进程的组ID。
-G gidlist仅匹配真实组ID在给定列表中的进程。每一个组ID可以使用组名称或者数字的组ID指定。
-J projidlist匹配项目ID在给定列表中的进程。每一个项目ID可以使用项目的名称或者数字项目ID来指定。
-l长格式输出。输出每一个匹配进程的名称连同进程ID。进程名称从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在给定列表中的进程。每个用户ID可以通过一个登录名称或者数字的用户ID指定。
-U uidlist 仅匹配真实的用户ID在给定列表中的进程。每个用户ID可以通过一个登录名称或者数字的用户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 sendmail
283

 

例子2 终止一个进程

终止最近生成的xterm:
 

复制代码
代码如下:

example% pkill -n xterm
Exit Status

 

如下退出值被返回:

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

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

复制代码
代码如下:

# who
root pts/0 2010-10-28 09:36 (192.168.1.236)
root pts/2 2010-10-28 09:40 (192.168.1.27)
root pts/3 2010-10-28 10:02 (192.168.1.82)
root pts/4 2010-10-20 16:06 (192.168.1.244)

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

复制代码
代码如下:

# pkill -kill -t pts/3

再次查看

复制代码
代码如下:

# who
root pts/0 2010-10-28 09:36 (192.168.1.236)
root pts/2 2010-10-28 09:40 (192.168.1.27)
root pts/4 2010-10-20 16:06 (192.168.1.244)

已成功踢出

延伸 · 阅读

精彩推荐
  • LinuxLinux系统下无法卸载挂载的目录怎么办?

    Linux系统下无法卸载挂载的目录怎么办?

    我们在日常运维中经常性会遇到需要进行磁盘的扩容、卸载、挂载等操作,但是有时候这个系统上跑的应用并没有停止或者有其他的运维同事在操作这个目...

    今日头条10302020-12-30
  • Linuxssh 登录很慢该如何解决

    ssh 登录很慢该如何解决

    这篇文章主要介绍了ssh 登录很慢该如何解决的相关资料,这里提供了两种方法,DNS反向解析及关闭ssh的gssapi认证的解决办法,需要的朋友可以参考下...

    linuxeye9922021-12-16
  • Linux将 Linux 终端与 Nautilus 文件管理器结合起来

    将 Linux 终端与 Nautilus 文件管理器结合起来

    Nautilus 是 GNOME 桌面环境中的图形化文件浏览器。你可以使用它来访问和管理系统中的文件和文件夹。 尽管并非所有人都喜欢使用终端来管理文件和目录,...

    未知812023-08-08
  • Linux在Linux系统中创建新的亚马逊AWS访问密钥的方法

    在Linux系统中创建新的亚马逊AWS访问密钥的方法

    如何在Linux系统中创建新的亚马逊AWS访问密钥?我在配置一个需要访问我的亚马逊AWS帐号的应用时被要求提供AWS访问密钥ID和秘密访问密钥,我怎样创建一个...

    Linux教程网6182019-10-30
  • Linuxlinux驱动程序开发详细介绍

    linux驱动程序开发详细介绍

    前提,一般来说内核代码的错误可能会引起一个用户进程的死亡,或者整个系统的瘫痪,更严重的后果,可能导致磁盘损伤~因此建议最好有一台实验机进行...

    Linux教程网5392019-12-17
  • Linuxlinux top命令详解

    linux top命令详解

    这篇文章主要介绍了linux top命令详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    sparkdev5622022-03-01
  • Linuxlinux设置tomcat自启动的方法

    linux设置tomcat自启动的方法

    这篇文章主要介绍了linux设置tomcat自启动的方法,需要的朋友可以参考下...

    Linux教程网8512021-10-10
  • Linux理解 Linux/Unix 登录脚本的技巧

    理解 Linux/Unix 登录脚本的技巧

    有一些常见的情况,例如从Debian的包管理程序到Iaas的管理中,很多任务需要设置环境变量才能正常运行。 有时,程序通常只需要在 登陆时运行一次,例如...

    未知1042023-05-12