Linux中的kill命令(详细指南)

494 阅读4分钟

kill命令通常用于终止正在运行的进程,它以进程的ID或名称为参数,向进程发送一个信号,该进程将根据发送的信号采取行动。

目录

  1. 简介
  2. 语法
  3. 命令
  4. 总结
  5. 参考文献

介绍

kill命令通常用于终止Linux中的进程,给一个进程的idPID,它发送默认信号SIGTERM,从而终止该进程。

请记住,进程只能被所有者(用户)杀死,用户不能杀死其他用户拥有的进程,用户不能杀死系统使用的进程,最后,根用户可以杀死系统或其他用户的任何进程。

语法

语法如下:

kill [signal or option] PID(s)

kill命令的各种选项包括:

  • -l,列出所有信号名称。
  • -s -signal, 指定信号名称。
  • -n sig, 指定信号编号。

也可以使用killall,它可以同时杀死多个进程。
killall
的各种选项是

  • -e, --exact, 在名字很长的情况下检查是否精确匹配。
  • -g, --process-group, 杀死一个进程组。
  • -y, --younger-than, 杀死比指定时间小的进程。
  • -o, --older-than, 杀死超过指定时间的进程。
  • -i, --interactive, 在杀死一个进程之前要求确认。
  • -l, --list, 列出所有信号名称。
  • -q, --quiet, 杀死进程而不打印任何输出。
  • -s, --signal SIGNAL, 发送一个信号而不是SIGTERM。
  • -u, --user USER,按特定用户杀死进程。
  • -n , --ns PID, 杀死与PID相同名称空间的进程。
  • -r, --regexp, 杀死由正则表达式匹配的进程。
  • -v, --verbose, 打印出调试信息。
  • -I, --ignore-case, 匹配一个进程,同时忽略大小写的敏感性。

pkill命令根据进程的名称来杀死它,
常用的选项包括

  • -n, 杀死新发现的进程。
  • -o, 杀死旧的进程。
  • -u, 杀死由指定用户拥有的进程。
  • -x, 杀死符合指定模式的进程。
  • -signal,杀死具有指定信号的进程。

命令

要查看当前运行的进程,我们可以使用topps命令或htop命令。

一个例子
要列出所有正在运行的进程,我们写:

ps -a

ps -aux

进程ID

一个PID可以是:

  • > 0,(大于0)在这种情况下,信号被发送到一个ID等于PID的进程。
  • ==0,信号被发送到当前进程组中的进程,即发送信号的shell的那个GID中的进程。要获得ID,请执行id命令。
  • ==-1,信号被发送到所有与执行该命令的用户有相同UID的进程。
  • <-1,信号被发送到GID等于PID绝对值的进程组中的所有进程。

为了得到一个进程的ID,我们可以写:

pidof bash

上述命令返回PID osbash进程。

终止进程

kill命令向一个指定的进程或进程组发送一个信号。该信号指定了一个进程将如何被影响。它可以被杀死,重新加载。

为了列出所有的信号名称,我们写道:

kill -l

常用的信号有:1,重新加载一个进程;2,从键盘信号中发送一个中断;9,发送一个杀死信号来杀死进程;15,优雅地杀死一个进程;171823,发送一个信号来停止一个进程。

一个例子

为了向一个PID为2342的进程发送SIGKILL信号,我们写道

kill -9 2342

我们也可以这样写:

kill -SIGKILL 2342

我们也可以通过传递多个进程ID来杀死多个进程,如下所示:

kill -9 7888 2313 6719 6671

我们也可以通过它的名字来杀死一个进程,如下所示:

kill firefox

该命令杀死了一个正在运行的火狐进程。

假设有多个Firefox实例在运行,我们可以使用killall命令:

killall -9 firefox

或通过使用pkill命令:

pkill firefox

要重新加载一个进程的设置,我们可以发送SIGHUP信号:

kill -1 2278

其中2278是我们想要重新加载的进程的PID。

总结

我们使用pstophtop命令来获得PID,然后用它来杀死一个进程。我们也可以使用pkill命令用它的名字杀死一个进程。
killall
命令杀死一个进程的所有实例。

你也可以在htoptop窗口中杀死进程。

参考资料

  1. Linux进程:信号、终止、僵尸、清理
  2. 执行man killkill --help
  3. 对于进程信号,执行kill -l
  4. htop