Linux系统中kill命令杀死进程常用小技巧分享

2023-12-01 0 858
目录
  • Linux系统中kill命令杀死进程小技巧
    • 基础
    • 进阶
      • 1 查找进程号的方式进行改进
      • 2 将常规的两步杀死进程合并为一步
      • 3 强制踢掉登陆用户
    • kill的注意事项
    • Linux中杀死进程kill和killall命令的区别
      • 第一种方法
        • 第二种方法
        • 总结

          Linux系统中kill命令杀死进程小技巧

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

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

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

          基础

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

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

          ps -aux | grep 应用名称

          或 ps -ef | grep 应用名称

          或者 top | grep 应用名称

          Linux系统中kill命令杀死进程常用小技巧分享

          第二步:杀死进程

          正常杀死进程:kill -15 pid号

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

          强制杀死进程: kill -9 pid号

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

          原理解读:

          Kill命令和信号

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

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

          kill -l

          Linux系统中kill命令杀死进程常用小技巧分享

          上图:共有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

          Linux系统中kill命令杀死进程常用小技巧分享

          (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和killall命令的区别

          第一种方法

          kill [信号代码] 进程ID

          注:信号代码可以省略;我们常用的信号代码是 -9 ,表示强制终止。

          对于僵尸进程,可以用kill -9 来强制终止退出。

          kill 的应用,是和ps 或pgrep 命令结合在一起使用的。

          如下:

          1 [root@-linux-byx ~]# ps -ef|grep magic_Linux
          2 root 13020 1 1 1月16 ? 00:33:35 ./magic_Linux01
          3 root 22761 1 1 01:27 ? 00:06:35 ./magic_Linux02
          4 root 25279 1 0 1月16 ? 00:16:48 ./magic_Linux03
          5 root 27694 1 0 1月16 ? 00:16:48 ./magic_Linux04

          kill 命令实例:用kill 杀死 进程 magic_Linux02

          [root@-linux-byx ~]# kill -9 22761

          与kill命令不同的是,killall 命令可以根据进程名称来杀死进程。kill 命令 则先需要找到进程的id。

          第二种方法

          killall 通过程序的名字,直接杀死所有进程

          killall 也和ps或pgrep 结合使用,比较方便。

          如下:

          1 [root@-linux-byx ~]# pgrep -l magic_Linux
          2 13020 magic_Linux01
          3 22761 magic_Linux02
          4 25279 magic_Linux03
          5 27694 magic_Linux04

          killall 命令实例: 用killall 杀死 进程 magic_Linux02

          [root@-linux-byx ~]# killall magic_Linux

          总结

          以上为个人经验,希望能给大家一个参考,也希望大家多多支持悠久资源网。

          收藏 (0) 打赏

          感谢您的支持,我会继续努力的!

          打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
          点赞 (0)

          悠久资源 Linux服务器 Linux系统中kill命令杀死进程常用小技巧分享 https://www.u-9.cn/server/linux/357.html

          常见问题

          相关文章

          发表评论
          暂无评论
          官方客服团队

          为您解决烦忧 - 24小时在线 专业服务