当进程没有被杀死时不要告诉我

默认情况下,如果我们尝试杀死未运行的程序,则会收到以下错误:

programname: no process found

如果我们不想被告知是否找不到进程,请使用以下命令:

killall -q

等待 killall 完成

默认情况下,killall 会在我们运行时返回到终端,但我们可以强制 killall 等待所有指定的进程都已关闭,然后再返回到终端窗口。

运行以下命令:

killall -w

如果程序永不消亡,那么killall 还会继续存在。

杀死已经运行了一定时间的进程

想象一下,你一直在运行一个程序,它花费的时间比你希望的要长得多。

我们可以通过以下方式终止命令:

killall -o h4

上面命令中的 h 代表小时——这个命令会杀死运行四个小时或者更长时间的进程。

指定以下任一时间里程碑:

  • s : 秒
  • m : 分钟
  • h : 小时
  • d : 天
  • w : 周
  • M : 月
  • y : 年

或者,要终止刚刚开始运行的命令,请使用以下选项:

killall -y h4

这次killall 命令会杀死所有运行不到4 小时的程序。

在杀死程序之前获得确认

显然,killall 命令是一个强大的命令,我们不想意外杀死错误的进程。

当你使用下面的开关时,在每个进程被杀死之前都会询问你是否确定。

killall -i

杀死特定用户的程序

要终止特定用户拥有的程序,请使用 -u 开关:

killall -u <username> <programname>

省略程序名称以终止该用户的所有进程。

杀死程序时忽略大小写

要确保 killall 命令忽略我们提供的程序名称的大小写,请使用以下命令:

killall -I
killall --ignore-case

杀死同一组中的所有程序

当我们运行如下命令时,它会创建两个进程:

ps -ef | less

一个命令用于 ps -ef 部分,它列出系统上所有正在运行的进程,并且输出通过管道传输到 less 命令。

两个程序都属于同一个组,即 bash。

要同时杀死两个程序,请运行以下命令:

killall -g

例如,要终止在 bash shell 中运行的所有命令,请运行以下命令:

killall -g bash

要列出所有正在运行的组,请运行以下命令:

ps -g

如何使用“killall”命令

killall 命令按名称杀死所有进程。
这意味着如果我们运行同一程序的三个版本,killall 命令会杀死所有三个版本。

示例:

killall xviewer
Linux中如何杀死进程

杀死确切的进程

killall 命令可能会产生奇怪的结果。
如果命令名称长度超过 15 个字符,则 killall 命令仅适用于前 15 个字符。
因此,如果我们有两个程序共享相同的前 15 个字符,即使我们只想杀死一个程序,这两个程序也会被取消。

为了解决这个问题,我们可以指定以下开关,它只会杀死与确切名称匹配的文件。

killall -e

killall 命令是一种强大但可定制的武器,可以对抗坏程序

每隔一段时间,程序就会挂起,在这种情况下,我们需要一种杀死它的方法。
Linux 提供了几种从 shell 强制终止程序的方法。

使用正则表达式

不是指定程序或者命令的名称,而是指定一个正则表达式,以便所有与正则表达式匹配的进程都被 killall 命令关闭。

要使用正则表达式,请使用以下命令:

killall -r <expression>
日期:2020-07-15 11:16:37 来源:oir作者:oir