Linux - 如何根据名字杀掉一个进程

news/2024/11/24 13:28:31/

Linux提供了许多工具来管理系统中的进程。你可以用它们来创建、克隆、甚至销毁进程(create, clone, destroy)。有时你可能需要在Linux中按名称杀死所有进程。在Linux中,有多种方法可以做到这一点。你可以使用pkill、pgrep、pidof和killall中的任何一个函数。在这篇文章中,我们将详细介绍它们。现在的例子都是在Ubuntu中运行的。

1, 使用pkill命令

pkill命令允许你直接按名称杀死进程。例如,以下是杀死所有以apache为名的进程的命令:

$ sudo pkill apache

pkill命令使用格式:

pkill [options] <pattern>

注意这个参数是一个pattern,是一个正则表达式。如果使用apache,那所有名字中包含apache的进程都会被杀掉。

如果命令是:

$ sudo pkill apache$

那就是杀掉所有名字结尾是apache的进程。

需要注意的是这里的进程命不包括选项部分,比如在Ubuntu系统里使用ps命令查看到一个进程:

/usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3

这个进程的名字就是前面的路径加进程名,而后面的长长选项都不是进程的名字。

可以直接使用ps -ef命令查看全部进程,里面包含完整的进程命。比如在当前路径下有个程序test,运行后显示进程名:

$ ./test

$ pwd

/home/ubuntu/Workspace/01_pkill

$ /home/ubuntu/Workspace/01_pkill/test

$ ps -ef  | grep test$

vm          2662    1628 99 09:12 pts/0    00:19:37 /home/ubuntu/Workspace/01_pkill/test

vm          3185    1628 99 09:29 pts/0    00:02:43 ./test

2,使用pgrep

pgrep命令根据输入的搜索字符串返回一个PID的列表。所以你也可以使用pgrep命令按其名称搜索所有的命令,并使用kill命令来杀死Linux中的这些进程。

下面的命令将列出所有名字为apache的进程的PIDs:

$ pgrep apache

6123

6230

可以加上kill命令,杀掉搜索名字得到的PID:

$ kill -9 `pgrep apache`

这里的kill -9是强制杀死某个进程。pgrep命令输出所有名字包含apache的进程PID,作为kill命令的输入,可以一次杀死多个进程。

pgrep的用法:

pgrep [options] <pattern>

所以参数也是一个正则表达式,和pkill一样。

3,使用pidof

类似的,使用pidof命令,也可以根据进程名获取PID列表。

$ pidof apache

6123 6230

然后就可以使用kill命令来根据PID杀死进程:

$ kill -9 `pidof apache`

pidof命令的用法:

pidof [options] program [program...]

可以看到可以后面接多个参数,一次返回多个进程名的ID。

pidof和pgrep的区别是后面的参数需要是完全匹配的进程名。要么是和程序名一样,要么是和完整路径名加程序名一样。

4,使用killall

使用killall命令根据名字直接杀死进程:

$ killall -9 apache

这个命令和pidof类似,给出的名字要完全匹配,要么和程序名一样,要么是和完整路径名加程序名一样。

5,其他方法

如果不使用上面这些工具,而杀掉某个进程的原始方法,恐怕是使用ps命令显示出所有进程,按名字找到进程信息所在行的PID,再使用kill命令。

或者使用ps | grep procName,来快速定位进程信息,找出PID,再执行kill命令。这样使用没有上面的方法快。

$ ps | grep test

   3450 pts/0    00:00:03 test

$ kill 3450

[1]+  Terminated              ./test

总结

按照是模式匹配还是完全匹配名称,将pgrep/pkill和pidof/killall区分开来。

按照取得PID信息和直接执行kill操作,将pkill/killall和pgrep/pidof区分开来。

参考:

How to Kill Process by Name in Linux - Ubiq BI


http://www.ppmy.cn/news/283585.html

相关文章

MTK-6235

1&#xff1a;UCS2Strlen mmi_ucs2strlenpfnUnicodeStrlen ---> mmi_ucs2strlen;AnsiiToUnicodeString mmi_asc_to_ucs2UnicodeToAnsii mmi_ucs2_to_ascpfnUnicodeStrncmp mmi_ucs2ncmp; 2&#xff1a; 墙纸 #define CFG_MMI_WA…

HDU6230-Palindrome (马拉车 +BIT )

题意描述 给定一个字符串&#xff0c;统计有多少个子串是one−and−half palindromicone−and−half palindromic. (即字符串长度为3n−23n−2,且满足S[i]S[2n−i]S[2ni−2](1≤i≤n)S[i]S[2n−i]S[2ni−2](1≤i≤n)。 数据范围&#xff1a;字符串长度小于等于500000500000. …

PostgreSQL使用入门

官网&#xff1a;https://www.postgresql.org/中文文档&#xff1a;http://www.postgres.cn/docs/12/ 安装配置 MacOS HomeBrew 安装 安装: # 查找 postgresql 可用版本 $ brew search postgresql# 安装指定版本 $ brew install postgresql15# 安装默认版本 $ brew instal…

【C++】deque的用法

目录 一、容器适配器二、deque的介绍三、deque的使用及缺陷1、deque的构造函数2、deque的元素访问接口3、deque的 iterator的使用4、deque的增删查改4、deque的缺陷5、为什么选择deque作为stack和queue的底层默认容器 一、容器适配器 在了解deque前&#xff0c;我们先讲一讲什…

ESP32(MicroPython) 几个动画

ESP32&#xff08;MicroPython&#xff09;几个动画 本次发布的动画程序如下 矩形缩放 接线&#xff1a;OLED(IIC)SCL-->(18)SDA-->(23) #导入Pin模块 from machine import Pin import time from machine import SoftI2C from ssd1306 import SSD1306_I2C #I2…

摄像机产生“拖影”、“重影”的原因

摄像机产生“拖影”、“重影”的原因&#xff1a; 快门时间较短&#xff1a;对于25帧的视频&#xff0c;如果快门时间为1/12&#xff0c;自然两帧图像叠加在一起降噪算法&#xff1a;使用3D降噪时&#xff0c;需要前后帧参与运算&#xff0c;可能导致此现象增益过大&#xff1…

有史以来最漂亮的游戏机

The recent reveal of the PlayStation 5’s design has divided the gaming world. There are those who appreciate its bold, daring industrial design and those who would have preferred something a little less outlandish; perhaps a little more traditional. 吨 他…

PM42L-048 步进电机

原文地址::http://www.doc88.com/p-007903494027.html 相关文章 1、日本NMB电机PM42L-048----https://www.kuyibu.com/c_gw1122/p4474960.html 2、步进电机"pm42l-048-syh2"代表什么意思----https://zhidao.baidu.com/question/166351370.html 3、JX-2R-05系列微…