• 一天一个 Linux 命令(36):kill 命令


    一、简介

    Linux里的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令。

    通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须用kill命令来终止,我们就需要先使用ps/pidof/pstree/top等进程查看工具获取进程PID,然后使用kill命令来杀掉该进程。

    kill命令可将指定的信号发送给相应的进程或工作。 kill命令默认使用信号为SIGTERM(15),用于结束进程或工作。如果进程或工作忽略此信号,则可以使用信号 SIGKILL(9) ,强制杀掉进程。

    二、格式说明

    kill [-s signal|-p] [-q sigval] [-a] [--] pid...
    kill -l [signal]
    
    kill [参数] [进程号]
    

    三、选项说明

    -l	列出系统支持的信号
    -s	指定向进程发送的信号
    -a	处理当前进程时不限制命令名和进程号的对应关系
    -p	指定kill命令只打印相关进程的进程号,而不发送任何信号
    -u  指定用户 
    
    使用 kill -l 命令列出所有可用信号,最常用的信号是:
    1 (HUP):重新加载进程。
    9 (KILL):杀死一个进程。
    15 (TERM):正常停止一个进程。
    

    四、命令功能

    用来删除执行中的程序或工作

    五、常见用法

    5.1 显示系统支持的信号列表

    # kill -l
    
    1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
     6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
    11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
    16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
    21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
    26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
    31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
    38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
    43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
    48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
    53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
    58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
    63) SIGRTMAX-1  64) SIGRTMAX
    

    HUP 1 重新加载进程

    INT 2 中断(同 Ctrl + C)

    QUIT 3 退出(同 Ctrl + \)

    TERM 15 终止

    KILL 9 强制终止

    CONT 18 继续(与STOP相反, fg/bg命令)

    STOP 19 暂停(同 Ctrl + Z)

    5.2 查找进程,并用kill杀掉

    # ps aux|grep nginx
    root      7591  0.0  0.0 112816   972 pts/0    S+   10:46   0:00 grep --color=auto nginx
    www      13548  0.0  0.3  80608 26372 ?        S    Sep15   0:32 nginx: worker process
    www      13549  0.0  0.3  80608 26860 ?        S    Sep15   1:14 nginx: worker process
    www      13550  0.0  0.3  80608 27184 ?        S    Sep15   0:43 nginx: worker process
    www      13551  0.0  0.3  80608 27496 ?        S    Sep15   1:48 nginx: worker process
    root     30802  0.0  0.0  48828  5212 ?        Ss   Apr15   0:00 nginx: master process nginx
    

    杀掉nginx主进程30802

    # kill -9 30802
    

    5.3 强制杀死进程

    # kill -KILL 30802
    

    5.4 重新加载进程

    # kill -HUP 30802
    

    5.5 杀死指定用户所有进程

    # kill -9 $(ps -ef | grep www) //方法一 过滤出www用户进程 
    # kill -u www //方法二
    

    5.6 拓展

    init进程是不可杀的

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

     

  • 相关阅读:
    Elasticsearch7.6 环境部署
    JavaScript的语法
    如何在页面中引入JS教程
    什么是.bat文件
    window对象的一些其他通用函数
    history对象
    location对象
    32位与64位系统基本数据类型的字节数
    cygwin中运行python不能进入交互模式
    在Cygwin上安装编辑器vim
  • 原文地址:https://www.cnblogs.com/joshua317/p/15514543.html
Copyright © 2020-2023  润新知