• 技术文章 >运维 >linux运维

    linux杀死进程命令kill怎么用

    青灯夜游青灯夜游2023-01-04 14:21:43原创649

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

    本教程操作环境:linux7.3系统、Dell G3电脑。

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

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

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

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

    基础用法


    杀死后台进程的步骤:

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

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

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

    1.png

    第二步:杀死进程

    kill  -15  pid号

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

     kill -9 pid号

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

    原理解读:Kill命令和信号

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

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

      kill -l

    2.png

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

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

    进阶用法


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

    以查找firefox进程为例:

    常规:ps -aux | grep java

    进阶:pgrep java

    或: pidof firefox-bin (不推荐)

    解读:

    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怎么用的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:linux
    上一篇:linux怎么复制文件夹到另一个文件夹 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • linux怎么移动文件到另一个文件夹• linux less命令怎么用• linux怎么共享文件夹• linux怎么查看主机名• linux添加路由命令是什么
    1/1

    PHP中文网