当进程没有被杀死时不要告诉我
默认情况下,如果我们尝试杀死未运行的程序,则会收到以下错误:
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
杀死确切的进程
killall 命令可能会产生奇怪的结果。
如果命令名称长度超过 15 个字符,则 killall 命令仅适用于前 15 个字符。
因此,如果我们有两个程序共享相同的前 15 个字符,即使我们只想杀死一个程序,这两个程序也会被取消。
为了解决这个问题,我们可以指定以下开关,它只会杀死与确切名称匹配的文件。
killall -e
killall 命令是一种强大但可定制的武器,可以对抗坏程序
每隔一段时间,程序就会挂起,在这种情况下,我们需要一种杀死它的方法。
Linux 提供了几种从 shell 强制终止程序的方法。
使用正则表达式
不是指定程序或者命令的名称,而是指定一个正则表达式,以便所有与正则表达式匹配的进程都被 killall 命令关闭。
要使用正则表达式,请使用以下命令:
killall -r <expression>