linuxpgrepgrep_Linux pgrep与kill的使用

article/2025/10/25 6:46:04

想结束系统中指定的进程,有以下指令可能参考:

ps -ef | grep pure-ftpd | grep -v grep | awk '{print $2" "$3}' | xargs kill -9 = pkill pure-ftpd

killall -9 nginx 或者 kill -9 `ps aux |grep -i nginx |grep -v grep |awk '{print $2}'` = kill -9 `pgrep nginx`

以上是很常规的方法,下面我们介绍一种系统自带的工具的用法。

名称

pgrep, pkill(其实是pgrep的链接) – 查找或者发信号给进程通过名称和其它属性,我们能得到进程许多信息和通过这些来对其进行相关操作。

语法

pgrep [-flvx] [-n | -o] [-d delim] [-P ppidlist] [-g pgrplist] [-s sidlist] [-u euidlist] [-U uidlist] [-G gidlist] [-t termlist] [-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的第一个命令行选项。

选项

支持下面的选项:

-c ctidlist  仅匹配列表中列出的ID的进程数。

# pgrep -c ssh -l

6

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

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

# pgrep -f ng -l

2159 nginx: master process /usr/sbin/nginx

2160 nginx: worker process

2222 hald-addon-input: Listening on /dev/input/event3 /dev/input/event2 /dev/input/event0

2230 hald-addon-acpi: listening on acpid socket /var/run/acpid.socket

2231 hald-addon-storage: polling /dev/hdc (every 2 sec)

-g pgrplist 仅匹配进程组ID在给定列表中的进程,如果组0包括在列表中,这个被解释为pgrep或者pkill进程的组ID。

# pgrep -g 2159 -l

2159 nginx(所有nginx进程的父进程)

2160 nginx

-G gidlist 仅匹配真实组ID在给定列表中的进程,每一个组ID可以使用组名称或者数字的组ID指定。

# pgrep -G 1000 -l

2388 sshd

2395 bash

2420 sshd

2421 sftp-server

-l 长格式输出,输出每一个匹配进程的名称连同进程ID,进程名称从pr_psargs 或者 pr_fname字段获得,依赖于-f选项是否指定。-l选项仅在pgrep命令中有效。

-n 匹配最新(最近生成的)符合所有其它匹配条件的进程,不能和-o选项一起使用。

-o 匹配最旧(最早生成的)符合所有其它匹配条件的进程,不能和-n选项一起使用。

-P ppidlist 仅匹配给定列表中父进程ID的进程。

# pgrep -P 2159 -l

2160 nginx

-s sidlist 仅匹配进程会话ID在给定列表中的进程,如果ID 0在列表中,这个解释为pgrep或者pikill进程的会话ID。

# pgrep -s 2159 -l

2159 nginx

2160 nginx

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

# pgrep -t pts/1 -l

2395 bash

-u euidlist 仅匹配有效用户ID在给定列表中的进程,每个用户ID可以通过一个登录名称或者数字的用户ID指定。

# pgrep -u hto -l

2388 sshd

2395 bash

-U uidlist 仅匹配真实的用户ID在给定列表中的进程,每个用户ID可以通过一个登录名称或者数字的用户ID指定。

# pgrep -U hto -l

2388 sshd

2395 bash

2420 sshd

2421 sftp-server

-v 反向匹配。匹配所有的进程除了符合匹配条件的。

-x 仅认为进程的参数字符串或者执行文件名称正确匹配规定模式是匹配的进程,模式被认为是准确的当所有在进程参数字符串或者可执行文件名称的字符匹配模式。

# pgrep -d, -x nginx

2159,2160

-z zoneidlist 仅匹配区域ID在给定列表中的进程,每一个区域ID可以使用一个区域名称或者一个数字的区域ID指定,这个选项仅在全局区域中执行有效,如果pkill程序用来往其它区域的进程发信号,进城必须宣称{PRIV_PROC_ZONE}特权。

-signal 指定发往每一个匹配进程的信号。如果没有指定,SIGTERM 是默认的信号。-signal仅在pkill命令中作为第一个选项有效。信号可以是在signal.h中定义的没有SIG前缀的一个符号名字,也可是一个相应的信号数值。

操作

支持如下操作:

pattern

指定一个扩展正则表达式(Extended Regular Expression (ERE))模式来匹配可执行文件名称或者完整的进程参数字符串。ERE语法的完整描述参看regex(5)。

示例

例1 获得一个进程的ID号

获得nginx的进程ID:

$ pgrep -x -u root nginx

2123

例2 终止一个进程

终止最近生成的apache2:

$ pkill -n apache2

Example 3: Find the process ID of the named daemon:

$ pgrep -u root named

Example 4: Make syslog reread its configuration file:

$ pkill -HUP syslogd

Example 5: Give detailed information on all xterm processes:

$ ps -fp $(pgrep -d, -x xterm)

Exit Status

如下退出值被返回:

0 一个或者多个进程被匹配。

1 没有进程被匹配。

2 指定了无效的命令行参数。

  3 出现一个致命的错误。0b1331709591d260c1c78e86d0c51c18.png


http://chatgpt.dhexx.cn/article/yAJfHJXa.shtml

相关文章

linux 命令 pgrep

linux查看服务pid pgrep是一个命令行实用程序,根据给定的条件查找正在运行的程序的进程id。它可以是完整的或部分的进程名、运行该进程的用户或其他属性。 语法: pgrep [options] pattern 当在没有任何选项的情况下调用时,pgrep将显示与给…

linux查看进程pgrep,查看进程PID专用工具-------pgrep

一、Linux命令pgrep简单介绍 pgrep是linux中常用的通过程序名称来查询进程的工具,一般是用来判断程序是否正在运行及查找正在运行进程的PID信息。通过pgrep命令,可以只指定进程的一部分名称从运行进程队列中进行查看进程的PID信息,但只输出PI…

linux shell pgrep命令使用方法(pgrep指令)获取进程号、统计进程数量(学会区分Linux进程进程名)

文章目录 问题背景pgrep指令help文档使用示例1. 列出匹配进程的PID和进程名称(-l)(默认只能从进程名的子集字符串匹配,如果要使用完整进程名的子集字符串匹配,请加-f参数,下同)2. 列出匹配进程的…

pgrep

Pgrep 用于根据进程的name查找进程的pid。例如:

Linux pgrep命令

1 pgrep pgrep是一个根据名称查找进程ID的命令,返回的是进程ID,若存在当个进程,则分为不同的行返回ID(默认实现)。 2 示例 查找java进程: pgrep java上图还显示了ps与pgrep的区别,简单来说&…

【笔记11】个人扫盲:内存与CPU中的核、线程、物理CPU、逻辑CPU

文章目录 CPU与内存CPU内存什么是通道常见问题 物理CPU和逻辑CPU常见问题LINUX查看WINDOW查看 CPU与内存 CPU CPU(Central Processing Unit)即中央处理器。CPU从内存(Memory)或缓存(Cache)中取出指令&…

Linux下区分物理CPU、逻辑CPU和CPU核数

一、概念 ① 物理CPU 实际Server中插槽上的CPU个数 物理cpu数量,可以数不重复的 physical id 有几个 ② 逻辑CPU Linux用户对 /proc/cpuinfo 这个文件肯定不陌生. 它是…

记录一个有意思的cpu逻辑cpu核数问题(已解决)

top命令查看逻辑cpu个数的时候发现只有20个 实际上服务器的的逻辑cpu个数是32个 物理cpu核数 PS:该问题也存在于部分新旧服务器上,网上没找到答案,特此记录。希望未来可以得到答案。 2021年09月27日更新 目前认为最近用到了多少cpu核数就显…

物理CPU,物理CPU内核,逻辑CPU概念详解

1.说明 CPU(Central Processing Unit)是中央处理单元, 本文介绍物理CPU,物理CPU内核,逻辑CPU, 以及他们三者之间的关系, 一个物理CPU可以有1个或者多个物理内核, 一个物理内核可以作为1个或者2个逻辑CPU。 …

Linux下区分物理CPU、逻辑CPU、CPU核数、线程数以及查看命令

概念 ① 物理CPU 实际服务器中插槽上的CPU个数 是指物理上,也就是硬件上存在着几颗物理cpu,指的是真实存在是cpu处理器的个数,1个代表一颗,2个代表2颗cpu处理器。 物理cpu数量,可以数不重复的 physical id 有几个 ② 逻辑CPU Lin…

linux服务器的物理CPU,CPU核数,逻辑CPU及Hadoop的Vcore

linux服务器的物理CPU,CPU核数,逻辑CPU及Hadoop的Vcore 1、Linux服务器的核数的概念 物理CPU: 服务器上真实存在的CPU,可以看到 CPU的核 (core): 一个CPU上包含多少核(core),真实存在但不能直接看到 总核数…

CPU 主频,核数 参数解读 物理CPU,逻辑CPU,物理核 概念辨析

Q1: CPU高主频好还是多核数好? 游戏需求 如果是主打游戏,由于游戏需要的是最简单粗暴的计算工作,这方面多核心有点无用武之地。因此,目前主流游戏都是双核心调用,四核或者更多核心的比较少。 也就是说&…

物理CPU-Core-逻辑CPU -超线程

原文地址: http://www.daniloaz.com/en/differences-between-physical-cpu-vs-logical-cpu-vs-core-vs-thread-vs-socket/ 水平所限,翻译不准确的地方望指正。 当我们使用像 nproc或者 lscpu等命令 来在CPU级别上获取计算机的架构和性能的时候&#xf…

【Pytorch】物理cpu、逻辑cpu、cpu核数、pytorch线程数设置

上周末写ddp,常常遇到中途退出的问题,解决中途遇到了很多CPU线程数和核心数的问题,记录如下 1. 物理cpu、逻辑cpu、cpu核数、超线程 这一部分主要来自什么是物理cpu,什么是逻辑cpu,什么cpu核数,什么是超线…

Linux下关于物理CPU、逻辑CPU和CPU核数、超线程

1、概念 (1) 【物理CPU数】 :实际Server中插槽上的CPU个数,物理cpu数量可以数不重复的 physical id 有几个 (physical id) (2) 【CPU核数】:单块CPU上面能处理数据的芯…

物理CPU,CPU核数,逻辑CPU

CPU概念 物理CPU 在Info中由physical id识别 物理CPU指的是实际主板上插槽上的CPU个数。physical id 就是每个物理CPU的ID,不重复的 physical id 有几个,物理cpu数量就是几个。 CPU核数(物理核) 在Info中由 cpu cores 识别 CPU核…

物理cpu数,逻辑cpu数,cpu核数

一、物理CPU数 机器的主板上实际插入插槽的CPU个数。 二、CPU核数 单块CPU上面集成一个或者多个处理器芯片(称为Core,核心)。 CPU最初发展的时候是一个CPU一个处理核心,CPU的性能主要靠提高核心工作频率来提高,但是仅仅提高单核芯片的速度…

物理cpu数和cpu核数和逻辑cpu数和vcpu区别

物理cpu数和cpu核数和逻辑cpu数和vcpu区别1.物理cpu数:主板上实际插入的cpu数量,可以数不重复的 physical id 有几个(physical id) 2.cpu核数:单块CPU上面能处理数据的芯片组的数量,如双核、四核等 &#…

CPU相关概念:物理cpu数、核数、逻辑cpu数,12核20线程实例分析

文章目录 0. 写此篇博客的原因1. 物理CPU,核,逻辑CPU概念1.1 内核工作方式1.2 超线程1.3 什么是大小核 2. CPU信息的查询方法2.1 Windows下查询CPU信息的方法2.2 Linux下查询CPU信息的方法方法一:lscpu 整体查看方法二:分别查看 3…

Linux系统下物理CPU和逻辑CPU的区别

01、问题 最近在搞Linux下性能评测,在做CPU评测时发现了个有意思的现象,因为uos系统是自带系统监视器的,在对输入法进程检测时,发现其CPU占用率为1%: 但是我用top命令查询时却发现它的CPU占用率为4%! 这是…