简介:

无论你使用哪种操作系统,你一定会遇到某个行为失常的应用,它把自己锁死并拒绝关闭。在Linux(还有Mac),你可以用一个"kill"命令强制终结它。在这个教程中,我们将展示给你多种方式使用"kill"命令终结应用。

kill命令

1,kill命令和信号:

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

kill命令的工作原理是,向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。比如在top命令中,我们看到系统运行许多进程,有时就需要使用kill中止某些进程来提高系统资源。kill是大多数Shell内部命令可以直接调用的。

2,你可以用这个命令看到所有信号的列表,即列出所有信号名称:

$ kill -l

SIGTERM:此信号请求一个进程停止运行。此信号是可以被忽略的。进程可以用一段时间来正常关闭,一个程序的正常关闭一般需要一段时间来保存进度并释放资源。换句话说,它不是强制停止。
SIGKILL:此信号强制进程立刻停止运行。程序不能忽略此信号,而未保存的进度将会丢失。

3,使用"kill"的语法是:

kill [信号或选项] PID(s)
默认信号(当没有指定的时候)是SIGTERM。当它不起作用时,你可以使用下面的命令来强制kill掉一个进程:

kill SIGKILL PID
或者

kill -9 PID
这里"-9"代表着SIGKILL信号。

例如,要kill掉Chrome,我会运行命令:

kill -9 3629,通过$ ps -aux可以得到pid 
也可以在同一时间kill多个进程。
kill -9 PID1 PID2 PID3

得到指定信号的数值

[root@localhost test6]# kill -l KILL
9

[root@localhost test6]# kill -l SIGKILL

9

[root@localhost test6]# kill -l TERM
15

[root@localhost test6]# kill -l SIGTERM
15

4,init进程是不可杀的
命令:kill -9 1

init是Linux系统操作中不可缺少的程序之一。所谓的init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。 其它所有进程都是init进程的子孙。init进程是不可杀的!

killall命令:

killall同样使用进程名替代PID,并且它会kill掉所有的同名进程。例如,如果你正在运行多个Firefox浏览器的实例,可以用命令把它们全部kill掉:

killall chrome

xkill命令:

xkill 是图形方式kill一个应用。当你在终端键入"xkill",你的光标将立刻变成一个"十字"。你只需要做的是在不正常的应用上点击一下,它就会立刻kill掉这个应用。

注意:

$ kill -9 PID, 这个强大和危险的命令迫使进程在运行时突然终止,进程在结束后不能自我清理。危害是导致系统资源无法正常释放,一般不推荐使用,除非其他办法都无效。 
当使用此命令时,一定要通过ps -ef确认没有剩下任何僵尸进程。只能通过终止父进程来消除僵尸进程。如果僵尸进程被init收养,问题就比较严重了。杀死init进程意味着关闭系统。 
如果系统中有僵尸进程,并且其父进程是init,而且僵尸进程占用了大量的系统资源,那么就需要在某个时候重启机器以清除进程表了。

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

shell中的kill命令相关推荐

  1. linux命令kill_什么是Linux中的kill命令?

    linux命令kill Need to kill a running process? The kill command in Linux is built for just that. No ope ...

  2. linux中kill命令默认发出的信号,linux中的kill命令的详细解释

    linxu下的kill命令主要功能是用来杀死进程的.下面由学习啦小编为大家整理了linux的kill命令的详细解释的相关知识,希望对大家有帮助! 一.linux中的kill命令的详细解释 1.命令格式 ...

  3. linux shell 中的sleep命令

    开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...

  4. linux脚本添加source,shell中的source命令的巧妙用法

    首先,通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录.例如,当我们修改了/etc/profile文件,并想让它立刻生效,而不用重新登录,就可以使用source命令,如sourc ...

  5. shell中的PS命令的含义

    1.ps查看进程的命令. 2.PS命令中的%CPU是指一个进程占用CPU的时间百分比. PS的man手册的解释是这样的 ps的代码中是这样处理的 其中seconds_since_boot是用当前时间减 ...

  6. [linux运维]1@linux shell中的实用命令

    函数传参 shell中如何写一个函数呢? 这个问题, 首先说, shell中的函数, 在方法体里, 没有形参, 都是通过默认的特殊值获得的, 比如$1, $2, 参数的数量用. 而传参呢, 也是通过方 ...

  7. shell中的expect命令

    原文https://blog.csdn.net/jxdl6655/article/details/78626749 expect可以实现shell实现不了的用户交互的需求.expect可以将交互写在一 ...

  8. shell中 的 export命令

    export 功能说明:设置或显示环境变量. 语 法:export [-fnp][变量名称]=[变量设置值] 补充说明:在shell中执行程序时,shell会提供一组环境变量.export可新增,修改 ...

  9. shell中一些特殊命令|: 管道命令。;;在前一个命令结束时,而忽略其返回值,继续执行下一個命令。

    shell传递参数 $0 对应的是当前 Shell 脚本程序的名称,$#对应的是总共有几个参数,$*对应的是所有位置的参数值,$?对应的是显示上一次命令的执行返回值,而$1.$2.$3--则分别对应着 ...

最新文章

  1. 【算法】非极大值抑制原理、流程和代码
  2. UVA 10004 - Bicoloring
  3. linux的基础知识——TCP异常断开
  4. 赠书 | 如何部署一个Knative Service
  5. GoldenGate组态(四)它veridata组态
  6. Windows上安装运行 cnpm, 来代替 npm
  7. Java学习笔记基础(上)
  8. 1. WordPress 安装
  9. Java Web实战篇-轻松提高千万级数据库查询效率
  10. 制作嵌入式文件系统工具 mkfs.ext2 mkfs.ext3 mkfs.ext4
  11. php 405 not allowed,405 Not Allowed 错误
  12. Prometheus+SpringBoot应用监控全过程详解
  13. CSDN 双11优惠券 使用攻略,畅享折上折!
  14. 王者怎么看微信以前玩过的服务器,王者荣耀如何查看微信帐号在那个区玩过
  15. 什么是token及怎样生成token
  16. vue双向绑定原理及实现
  17. linux+synaptics+驱动程序,Linux下Synaptics笔记本触摸板的配置
  18. 机器学习隐私保护-MPC通用编译器
  19. 03 A股10个月争取翻10倍实盘操作记录(第1周-休养生息,守株待兔)
  20. 样本服从正态分布,证明样本容量n乘样本方差与总体方差之比服从卡方分布x^2(n)...

热门文章

  1. 来自领导的指点--1 : 小程序和H5 代理问题
  2. Windows Powershell 快捷键介绍
  3. MySQL中的几种日志文件
  4. React Fiber 原理
  5. 如何解决 img 标签四周出现白边的问题
  6. 2018年医药流通企业排名(附图)
  7. OBS源码使用学习(一)之摄像头采集相关
  8. postgresql取数字的整数部分 trunc函数
  9. 【Python turtle】绘制一个有趣的的Emoticons
  10. 两轮差分底盘运动学模型