目录

前言

基础

进阶

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

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

3 强制踢掉登陆用户

kill的注意事项

前言

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

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

在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> 1 终端断线

<2>2 中断(等同 Ctrl + C)

<3>3 退出(同 Ctrl + \)

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

<5> 9 强制终止

<6>18 继续(与19相反)

<7>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命令中强杀进程,Linux 系统中kill命令杀死进程常用技巧相关推荐

  1. linux mysql 僵尸进程_Linux 系统中僵尸进程

    Linux 系统中僵尸进程和现实中僵尸(虽然我也没见过)类似,虽然已经死了,但是由于没人给它们收尸,还能四处走动.僵尸进程指的是那些虽然已经终止的进程,但仍然保留一些信息,等待其父进程为其收尸. 僵尸 ...

  2. linux java 僵尸进程_Linux 系统中僵尸进程

    Linux 系统中僵尸进程和现实中僵尸(虽然我也没见过)类似,虽然已经死了,但是由于没人给它们收尸,还能四处走动.僵尸进程指的是那些虽然已经终止的进程,但仍然保留一些信息,等待其父进程为其收尸.配图源 ...

  3. linux ftp解压命令 cannot fid or open,系统中无卷

    FastDFS分布式文件系统的下载和安装配置,FastDFS,FastDFS安装配置,分布式文件系统&lth2>&ltspan style="font-family:宋 ...

  4. linux date命令显示毫秒,解决MacOS系统中date命令没有毫秒和sha512sum、sha256sum、md5sum等命令的问题...

    安装brew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master ...

  5. linux运行360sh,在深度deepin系统中运行install.sh文件的方法

    在深度deepin操作系统中有时会遇到x.sh文件,如在安装canon imageclass 4712驱动时,找到linux-ufrii-drv-360-sc替代,但install.sh不知道如何运行 ...

  6. cpu时间片 linux,能讲一下在Linux系统中时间片是怎么分配的还有优先级的具体算法是...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 图 1 RT-Linux结构 RT -Linux的关键技术是通过软件来模拟硬件的中断控制器.当Linux系统要封锁CPU的中断时时,RT-Linux中的实 ...

  7. linux man 中文 mac,技术|MAC 系统中显示中文MAN手册

    最近在做中文MAN手册的翻译,发现MAC系统中的MAN命令不能像多数Linux发行版那样很好的显示中文MAN手册. 根据查找的资料,找到了解决方法: 1.首先要更新你的系统中的 groff 包,MAC ...

  8. linux如何运行synaptic,在Debian系统中安装Synaptic和使用Synaptic修复损坏的包

    本文介绍在Debian操作系统中安装Synaptic的方法,和使用Synaptic在Debian中找到破损的软件包及修复损坏的包,本文也适合运行Linux Mint Debian Edition.Mx ...

  9. Linux播放器MPlayer嵌入式开发系统中的应用

    摘要:本文论述了MPlayer在嵌入式开发系统中的应用,说明了如何在嵌入式开发板的平台上实现MPlayer的配置.编译.安装及调试过程. 关键词:嵌入式系统:MPlayer:MEncoder 引言 嵌 ...

  10. linux打开开发者权限,在UOS系统中关闭开发者模式和在UOS个人版中打开开发者模式...

    本文介绍在UOS系统中关闭(退出)开发者模式的方法和在UOS个人版中打开开发者模式的方法. 声明 UOS官方设定是开启开发者模式的过程不可逆,如果需要退出就只能重装(或者还原到开启开发者模式以前). ...

最新文章

  1. java 素数 五行_【数论】素数的判定与筛法
  2. u盘复制不进去东西_禁止U盘拷贝,再也不让别人复制你电脑里的东西了!
  3. Nslookup 命令使用浅析
  4. linux 内核将两个设备相关联,linux用户空间和内核空间交换数据
  5. Machine Learning:十大机器学习算法
  6. 怎么把页面内容填满一页_【2020手帐体系】超详细的设置思路和内容介绍~
  7. jquery easyui datagrid改变某行的值
  8. 可以声明一个抽象类类型变量_TypeScript系列(二)变量声明和数据类型
  9. 夺命雷公狗---DEDECMS----23dedecms修改内容页面展示的信息
  10. 繁星屠龙软件下载_繁星抢币有什么要求 - 天津政务网
  11. CSS形成圆、平行四边形、菱形、梯形、饼图
  12. godot 外部编辑器配置
  13. 将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005
  14. {:query, :rabbit@centos7, {:badrpc, :timeout}} 快速解决
  15. Android日历只显示年月,只显示年
  16. java utf8 简繁转换 类库_java简繁转换(区分港台)
  17. UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xff in position 41: invalid start byte
  18. 银河麒麟+FT2000源码安装Qt
  19. 《使用MAVEN+SSM+Ajax+shiro+MySql开发在线商场详解(4)》
  20. 北邮软工硕士复试笔试科目

热门文章

  1. java web导出excel表格(SSM框架 )
  2. C# List集合查找删除指定数据
  3. 拐点已到,运营商的2019大变局
  4. IBM服务器DASD指示灯报警
  5. 计算机网络——p2p
  6. App Store审核被拒的原因和解决方案
  7. ipv6 java代码影响_浅谈IPv4至IPv6演进的实施路径
  8. numpy中的cumsum函数
  9. vue+elementui中使用echarts给柱形图添加背景色
  10. 苹果 5G 尘埃落定:Intel 无奈出局,高通成为大赢家...