linux杀死进程命令kill如何使用

78次阅读
没有评论

共计 2485 个字符,预计需要花费 7 分钟才能阅读完成。

本篇内容介绍了“linux 杀死进程命令 kill 如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

在 linux 中,kill 命令是用来杀死系统中的进程,使用步骤:1、利用 ps、top、pgrep 等命令获取指定应用的进程号;2、使用 kill 命令根据进程号杀死该进程,语法“kill  -15   进程号”或“kill -9 进程号”。执行原理:kill 命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID 号,然后系统内核根据收到的信号类型,对指定进程进行相应的操作。

在 Linux 的系统中,kill 是我们最常见的命令之一。

kill,英语中为杀死的意思,顾名思义,就是用来杀死一些东西的命令,在 linux 中就是用来杀死系统中的进程。

kill 命令的执行原理是这样的,kill 命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作。

在 Windows 系统中,如果应用程序无反应我们会启动任务管理器终止应用,而在 Linux 系统中则使用 kill 命令,kill 命令主要用于强制关闭进程,下面就介绍一下 Linux 中 kill 命令的基础用法和进阶用法。

基础用法

杀死后台进程的步骤:

一般情况下,想要杀死后台一个进程,我们通常只需要做两步:

第一步:找到某个应用的进程号:

ps -aux | grep  应用名称  
或  ps -ef | grep  应用名称  
或者  top | grep  应用名称 

第二步:杀死进程

正常杀死进程:

kill -15 pid 号 

如杀死上图中 pid 为 10 的进程:kill -15 10

强制杀死进程:

 kill -9 pid 号 

注:杀死进程的时候,推荐是正常杀死进程,而不是强制杀死进程。

原理解读:Kill 命令和信号

当你执行一个“kill”命令,你实际上发送了一个信号给系统,告诉它去终结不正常的应用。总共有 60 个你可以使用的信号,但是基本上你只需要知道 SIGTERM(15)(正常杀死信号)和 SIGKILL(9)(强制杀死信号)。

你可以用这个命令看到所有信号的列表:

kill -l

上图:共有 64 中信号,每种信号均有名称和对应的信号序列号,当想要发送什么信号给系统的时候,只要告知系统该信号的序列号即可。如想要强制结束进程,则需要发送 9 号信号给系统,应该是这样的:kill -9 pid 号。

实际中常用的只有 9 种信号(最常用的只有 2 中:9 和 15):

1 终端断线

2 中断(等同 Ctrl + C)

3 退出(同 Ctrl + \)

15 终止(可以使得进程在退出之前清理并释放资源)

9 强制终止

18 继续(与 19 相反)

19 暂停(等同 Ctrl + Z)

进阶用法

1 查找进程号的方式进行改进

以查找 firefox 进程为例:

常规:ps -aux | grep java

进阶:pgrep java

或: pidof firefox-bin (不推荐)

解读:

pgrep: 这个命令是专门用于进程查询的 grep。

pidof: 看到 pidof 想到啥?没错 pid of xx,字面翻译过来就是 xx 的 PID。和 pgrep 相比稍显不足的是,pidof 必须给出进程的全名。

2 将常规的两步杀死进程合并为一步

进阶 1:

kill -s 9 `ps -aux | grep firefox | awk  {print $2} `

其中 awk {print $2} 的作用就是打印(print)出第二列的内容。根据常规篇,可以知道 ps 输出的第二列正好是 PID。就把进程相应的 PID 通过 xargs 传递给 kill 作参数,杀掉对应的进程。

进阶 2:

pgrep firefox | xargs kill -s 9

“xargs kill -s 9”中的 xargs 命令是用来把前面命令的输出结果(PID)作为“kill -s 9”命令的参数,并执行该命令。“kill -s 9”会强行杀掉指定进程。

进阶 3:

kill -s 9 `pgrep firefox`

进阶 4:

pkill -9 firefox

前面三个进阶虽然将查找进程和删除进程合并为一个步骤,但是,仍然是两个命令,这里采用 pkill 命令将查找和杀掉进程的两个命令合并为一个命令了,即:pkill=pgrep + kill,表示找到并杀死进程。

进阶 5:

killall -9 firefox

killall 和 pkill 是相似的, 不过如果给出的进程名不完整,killall 会报错。pkill 或者 pgrep 只要给出进程名的一部分就可以终止进程。

3 强制踢掉登陆用户

有的时候,可能我们的系统中有很多用户在同时登陆这一台服务器,而我们想要踢掉某个不良用户,就可以执行如下操作。

(1)查看用户登陆信息: who

(2)查看自己的身份(避免把自己踢掉):whoami

(3)踢掉用户 ats

pkill -kill -t pts/2(按终端踢,pts/ 2 为所踢用户的终端)
  或
 pkill -u ats(按用户名踢,ats 为用户名)

kill 的注意事项

1. 如果 kill 时,不指定信号就会默认发送信号 15,终止指定进程,使得进程在退出之前清理并释放资源。

2. 使用 kill 时,root 用户将影响用户的进程,非 root 用户只能影响自己的进程。

3. 使用 kill 时,当 kill 向进程发送信号,必须是这些进程的主人。如果杀死一个没有权限杀死的进程或杀死一个不存在的进程,就会报错。如下:

-bash: kill: (20) - No such process

4. 使用 kill 时,如果成功地发送了信号,shell 会在屏幕上显示出进程的终止信息。(按下 Enter 键,就会显示出来)

5. 使用 kill 时,如果使用信号 9,使进程强行终止,可能会使数据丢失或者终端无法恢复到正常状态。

6.init 进程,它是一个由内核启动的用户级进程,所有进程都是 init 进程的子孙,init 不可杀。

“linux 杀死进程命令 kill 如何使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-12发表,共计2485字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)