2020-06-17Linux命令:kill

2020-06-17Linux命令:kill,第1张

kill 命令通常用于终止执行中的程序。 kill可将指定的信息送至程序。默认送的信息为SIGTERM (信息编号为15),代表关闭进程

kill -9 pid kill -15 pid (效果等同于 kill pid )

其中 9 和 15 指的是信息编号

什么是信息编号

使用kill -l 命令可以查看信息及编号

信息编号代指不同的信息,不同的信息有不同的含义

可以看到 9代表 SIGKILL,15 代表 SIGTERM 所以 ==kill -9 pid 代表 发送SIGKILL信息给这个pid的程序 kill -15 pid 代表 发送SIGTERM信息给这个pid的程序==

那么 SIGTERM(15)和 SIGKILL(9)有什么区别

SIGTERM :当进程接收到SIGTERM后,大多会先释放自己的资源,再停止进程,属于正常关闭进程,但是如果进程正在工作,处理io等,不会立马关闭,或者 进程卡死的情况,都会导致SIGTERM不起作用。

SIGKILL : SIGKILL信号要求进程 立即关闭,强制关闭进程。

工作中关闭进程时,==先kill pid(默认使用编号15),如果不起作用 再使用 kill -9 pid。==

查看nginx的pid: ps -ef | grep nginx

可以看到nginx的主进程编号 是 7901

正常关闭 nginx的主进程

kill -15 7901 或者 kill 7901 再次查看nginx的进程 发现已经关闭

启动nginx,查看进程号,再强制关闭 nginx

nginx 

ps -ef | grep nginx    

kill -9 9827    

ps -ef | grep nginx 

可以看到 kill -9 只是强制关闭了 nginx的主进程,由于不是正常关闭,worker进程并没有被关闭,这就是强制关闭的弊端,再次关闭worker进程 kill -9 9828

1、kill 命令默认使用的信息编号及信息是什么?

:15,代表正常关闭进程

2、kill -9 pid 中 信息编号9代表什么信息?

:强制关闭进程

3、如何查看kill的信息编号?

:kill -l

4、写出正常关闭 进程编号 为 233 的命令

:kill -15 pid  or  kill pid

5、写出强制关闭 进程编号 为 233 的命令

:kill -9 pid

首先使用ps -ef命令确定要杀死进程的PID,然后输入以下命令:

# kill -pid

注释:标准的kill命令通常都能达到目的。终止有问题的进程,并把进程的资源释放给系统。然而,如果进程启动了子进程,只杀死父进程,子进程仍在运行,因此仍消耗资源。为了防止这些所谓的“僵尸进程”,应确保在杀死父进程之前,先杀死其所有的子进程。

*确定要杀死进程的PID或PPID

# ps -ef | grep httpd

结束进程

# kill -l PID

-l选项告诉kill命令用好像启动进程的用户已注销的方式结束进程。当使用该选项时,kill命令也试图杀死所留下的子进程。但这个命令也不是总能成功--或许仍然需要先手工杀死子进程,然后再杀死父进程。

给父进程发送一个TERM信号,试图杀死它和它的子进程。

# kill -TERM PPID

*killall命令

killall命令杀死同一进程组内的所有进程。其允许指定要终止的进程的名称,而非PID。

# killall httpd

*停止和重启进程

有时候只想简单的停止和重启进程。如下:

# kill -HUP PID

该命令让Linux和缓的执行进程关闭,然后立即重启。在配置应用程序的时候,这个命令很方便,在对配置文件修改后需要重启进程时就可以执行此命令。

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的方式正常结束进程。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12174021.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存