Skip to content

Latest commit

 

History

History
141 lines (121 loc) · 4.47 KB

Linux的kill命令.md

File metadata and controls

141 lines (121 loc) · 4.47 KB

kill命令 用于杀掉执行中的程序或工作。

  • 如果系统负载过高,就要找到大量占用资源的非系统进程,当硬件环境较低的情况下,这是作为系统管理员要关注的事。有些挂起的进程可以通过命令让其回复运行,而有些进程可能会一直占用CPU而不释放内存资源,长时间的占用CPU会耗尽内存使系统崩溃,对于这样的进程就要采用终止其运行的方式使其释放占用的资源。作为系统管理员要知道何时要终止和如何终止一个进程。

  • Linux系统提供了和进程间交互或通信的kill命令,通过kill命令可以使挂起的进程重新运行或强行终止占用资源的进程。可以通过kill命令向运行中的进程发送信号,让进程挂起或中断,这些信号在下面的表中。

  • 向进程发送的信号:

    编号 信号名称 描述 默认状态
    1 SIGHUP 终止终端或进程 进程终止
    2 SIGINT 来自键盘的中断,【Ctrl+C】 进程终止
    3 SIGQUIT 来自键盘的退出,【Ctrl+\】 进程流产
    9 SIGKILL 强迫进程终止,不可以屏蔽 进程终止
    15 SIGTERM 使进程终止 进程终止
    17 SIGCHLD 使子进程停止或终止 忽略
    18 SIGCONT 进程继续运行,与SIGSTOP结合使用 忽略
    19 SIGSTOP 进程暂停执行 进程暂停
    20 SIGTSTP 来自键盘的进程挂起,【Ctrl+Z】 进程暂停

kill命令格式

kill [-s signal|-p] [--] pid...
kill -l [signal]

·····································
signal是信号的意思,pid代表进程ID。

PID可以使用ps命令 或者 top等命令获取。

kill命令常用的参数

-l  信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-a  当处理当前进程时,不限制命令名和进程号的对应关系
-p  指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s  指定发送信号
-u  指定用户

kill命令 应用实例

  • 1、查看 kill命令 所有信号:

  • 2、杀死进程号为 123456789 的进程

  • 3、杀死指定用户的所有进程

  • 4、强制杀死某进程

  • 5、搭配 ps命令 使用

  • 6、init进程不可杀

  • 7、向进程发出信号的方法有kill和killall命令,kill命令可以通过进程号给进程发送信号,但是需要注意的是,执行kill命令的用户必须是进程的属主或root用户。如下所示。

      $ ps
        PID TTY          TIME CMD
       3647 pts/0    00:00:00 bash
       3664 pts/0    00:00:00 ps
      $ kill 3647
    
  • 8、默认情况下kill命令向进程发出的是15,尽可能终止信号,也可以通过参数-s指定其他信号,如下所示。

      $ ps
        PID TTY          TIME CMD
       3647 pts/0    00:00:00 bash
       3664 pts/0    00:00:00 ps
      $ kill -s 9 3647
    
    • 有时候向进程发送的信号会被进程忽略,可以采用参数-s指定其他信号,如9。这里需要注意的是强制终止进程可能会损坏文件。
  • 9、killall命令比kill命令强大,可以指定命令名或程序名称向进程发送信号,如下。

      $ ps
        PID TTY          TIME CMD
       3740 pts/0    00:00:00 bash
       3761 pts/0    00:00:00 ps
      $ killall -s 9 bash
    
    • 在使用kill命令或killall命令时要注意,如果操作的进程是系统重要的进程可能会破坏文件系统,这一点要注意。