Linux中杀掉一个进程可以用kill和killall命令,killall命令用命令名字来杀死指定进程,而kill命令则是用进程PID来杀死进程。
创新互联公司是一家专业从事成都网站制作、成都网站设计、网页设计的品牌网络公司。如今是成都地区具影响力的网站设计公司,作为专业的成都网站建设公司,创新互联公司依托强大的技术实力、以及多年的网站运营经验,为您提供专业的成都网站建设、营销型网站建设及网站设计开发服务!
killall命令,顾名思义就是杀死所有以某个命令启动的所有进程,用killall命令杀死进程的命令是这样的(这里是杀死以httpd命令启动的所有进程):
killall -9 httpd
-9参数表示强制终止进程。
最常用的是用kill命令结束进程,但是kill命令需要用进程的PID作为参数。如何知道指定进程的PID呢?如果是通过进程命令名字查看对应PID,可以通过ps或pstree命令看到它的PID;如果是通过网络监听端口号查看进程,需要用netstat命令看看端口号对应的进程的PID。
ps命令用于查看系统所有进程,而pstree命令以树状显示进程之间的关系,有助于判断要杀死哪个进程。记住在它们显示的结果中记下需要结束的进程PID。ps命令的常用用法是:
ps aux
-a参数表示不与终端有关的进程也显示出来。
pstree命令的常见用法是:
pstree -Aup
-p参数表示列出进程PID。
netstat命令可以查看监听端口的进程是哪个,常用的方式是:netstat -tlnp
这条命令的意思是列出系统里面监听网络连接的端口号和相应的进程PID。
参数说明:
-t:表示列出TCP连接(也可以加上-u参数表示同时列出UDP网络连接)
-l:表示列出正在网络监听的服务
关键是下面两个参数:
-n:表示以端口号来显示
-p:表示列出进程PID
Local Address这一列下面就有端口号,可以看到它对应的PID是多少,还有Program name那一列是进程名字。同样是要记下需要结束的进程的PID。
知道了指定进程的PID后,就可以用kill命令结束进程了:
kill -9 PID号码
或者kill -2 PID号码
-9参数是强制结束进程,而-2参数是相当于用键盘组合键Ctrl+C的方式正常结束进程。
1、首先,连接相应linux主机,进入到linux命令行状态下,等待输入shell指令。
2、其次,以终止进程号1984的nginx子进程为例,在linux命令行中输入:kill -9 1984。
3、最后,按下回车键执行shell指令,此时会看到进程号1984的nginx子进程被成功终止了。
awk是linux下强大的文本处理工具
xargs是linux下一个常用命令,用于将参数列表打散
这两个命令结合用来批量结束进程:
ps -ef | grep nsq | grep -v grep | awk '{print $2}' | xargs kill #杀掉所有nsq相关进程
awk是什么的缩写?看这里:
Linux 系统中,进程就是一个程序的运行实例。它可能运行在前端(比如有交互的进程),也可能运行在后端(比如无交互或自动运行的进程)。它可能是一个父进程(运行期间创建了其他进程),也可能是一个子进程(由其他进程所创建)。
在 Linux 系统中,除 PID 为 0 的第一个 init 进程(或 systemd )外,其余进程都有父进程。进程也可以拥有自己的子进程。
你可以通过使用 pstree 命令 来查看进程的树型结构,你可以清晰的看到各个进程的“家族树”。
在 Linux 系统中,正常情况下,子进程死亡后其父进程会接收到通知进行一些例如释放内存之类的清理操作。但是,如果父进程未收到通知察觉子进程死亡,那么子进程就进入了“僵死”状态。
这就是僵死进程产生的原因。
僵尸进程并不可怕,少量的僵尸进程对系统影响并不大。但如果系统的内存已经所剩不多或者有太多的僵尸进程在耗掉内存,问题会变得糟糕。
同样,大部分 Linux 系统进程最大 PID 设置为 32768,如果过多僵尸进程导致其他重要任务没有 PID 可用,那么你的系统会发生崩溃。
特别当存在一个编码糟糕的程序开始大量产生僵尸进程的时候,这种情况经常发生。在这种情况下,我们就需要找到并杀死僵尸进程。
在linux系统中,进程有如下几种状态,它们随时可能处于以上状态中的一种:
我们可以在命令终端中通过 top命令 来查看系统进程和它的当前状态。
命令如下:
如上面截图中看到的,其中共有 250 个任务(进程),其中 1 个处在 “运行中running” 状态,248 个进程处于 “休眠sleep” 状态,还有一个处于 “僵尸zombie” 状态。
现在问题进入下一步,如何杀死 “僵尸” 进程?
僵尸进程对系统来说就是已经死亡的进程,那么如何杀掉一个已经死亡的进程呢?
方法很简单,我们只需要通过如下ps命令就可以列举僵尸进程,得到它们的进程 ID。
ps ux 命令输出的第 8 列显示了进程状态。上述命令将会打印所有处在 Z+ 状态(表示僵尸状态)的进程。
确认了进程 ID 后,我们可以得到它的父进程 ID:
你也可以将上述两个命令结合在一起,直接得到僵尸进程的 PID 及其父进程的 PID:
通过以上命令都可以找到僵尸进程,然后你就可以通过 kill命 令杀掉了。
或者通过如下命令查看僵尸进程:
该命令输出结果上你可以直接看出其父进程ID,这时候你直接使用kill命令杀掉即可。
再次运行 ps 命令或 top 命令,你可以验证僵尸进程是否已经被杀死。
通过本文你将认识 Linux 系统中的僵尸进程以及明白了其产生的主要原因。同时,你也能学会如何查找僵尸僵尸进程并杀掉僵尸进程。
当然你也可以自己别写脚本设置成定时运行任务自动来替你做这些工作。