初学者的 Linux killall 命令(8 个示例)
在此页
- Linux killall 命令
- Q1。如何使用 killall 命令?
- Q2。 killall 区分大小写吗?
- Q3。如何让 killall 在终止进程之前询问?
- Q4。如何选择 killall 发送给进程的信号?
- Q5。如果指定的进程不存在,如何防止 killall 抱怨?
- Q6。如何杀死用户拥有的所有进程?
- Q7。如何根据时间杀死进程?
- Q8。如何确保 killall 仅在进程死亡后返回?
- 结论
我们已经讨论了 Linux kill 命令,如果你想终止 Linux 中的进程,你可以使用它。但是,还有另一个可用于相同目的的命令行实用程序:killall。在本教程中,我们将使用一些易于理解的示例来讨论此命令的基础知识。
但在此之前,值得一提的是,本教程中包含的所有示例都已在 Ubuntu 22.04 LTS 上进行了测试。
Linux killall 命令
killall 命令可让您按名称终止进程。以下是工具语法:
killall [OPTIONS] name
手册页是如何解释该工具的:
killall sends a signal to all processes running any of the specified commands. If no signal name is specified, SIGTERM is sent. Signals can be specified either by name (e.g. -HUP or -SIGHUP) or by number (e.g. -1) or by option -s.
If the command name is not regular expression (option -r) and contains a slash (/), processes executing that particular file will be selected for killing, independent of their name.
killall returns a zero return code if at least one process has been killed for each listed command, or no commands were listed and at least one process matched the -u and -Z search criteria. killall returns non-zero otherwise.
A killall process never kills itself (but may kill other killall processes).
以下问答式示例应该可以让您更好地了解 killall 命令的工作原理。

Q1。如何使用 killall 命令?
该工具的基本用法非常简单——您所要做的就是将进程名称作为参数传递给 killall。例如,要终止正在我的系统上运行的 gthumb 进程,我按以下方式使用 killall:
killall gthumb
请注意,如果您不知道进程的确切名称,可以使用 ps 命令获取此信息。
Q2。 killall 区分大小写吗?
是的。如果用户未能以正确的大小写写入进程名称,它会抛出一个错误 no process found 错误。下面是一个例子:

但是,如果需要,可以使用 -I 命令行选项强制 killall 忽略大小写。

Q3.如何让 killall 在终止进程之前询问?
假设您希望 killall 命令在终止进程之前询问用户权限,那么您可以使用 -i 命令行选项。这将使 killall 操作具有交互性。
例如:

Q4.如何选择 killall 发送给进程的信号?
默认情况下,它是 killall 发送给进程的 SIGTERM 信号。但是,您也可以发送其他信号。您可以使用选项 -s、--signal 和 -SIGNAL 来发送这些其他信号。
但是,要使其工作,您需要知道 killall 命令可以发送的所有信号。您可以使用 -l 命令行选项执行此操作。
killall -l
以下是在我们的系统上生成的上述命令的列表:

Q5.如果指定的进程不存在,如何防止 killall 抱怨?
如果名称传递给 \killall\ 的进程没有运行(不存在),则该工具会在输出中将其传达给用户。

但是,如果您不希望该工具产生此类输出,则可以使用 -q 命令行选项。

所以你可以看到 killall 命令在使用 -q 时保持安静。
Q6.如何杀死用户拥有的所有进程?
如果要求杀死特定用户拥有的所有进程,则可以使用 killall 提供的 -u 选项。不用说,该选项要求您指定用户的用户名作为其输入。
killall -u [user-name]
例如:
killall -u himanshu
Q7.如何根据时间杀死进程?
假设你想杀死现在运行时间超过 5 小时的所有进程,那么你可以使用 -o 选项按以下方式执行此操作:
killall -o 5h
当然,如果您不想杀死所有进程,您可以指定进程名称。类似地,如果您想要终止运行时间小于 4 小时的进程,那么您可以使用 -y 命令行选项来执行此操作。
killall -y 4h
以下是手册页对这些选项的解释:
-o, --older-than
Match only processes that are older (started before) the time
specified. The time is specified as a float then a unit. The
units are s,m,h,d,w,M,y for seconds, minutes, hours, days,
weeks, Months and years respectively.
-y, --younger-than
Match only processes that are younger (started after) the time
specified. The time is specified as a float then a unit. The
units are s,m,h,d,w,M,y for seconds, minutes, hours, days,
weeks, Months and years respectively.
Q8.如何确保 killall 仅在进程死亡后返回?
在 killall 将信号传递给进程后,如果你想确保命令只在进程死亡后返回,那么你可以使用 -w 命令行选项来执行此操作,它会强制 killall 等待。
killall -w [process-name]
以下是手册页描述此选项的方式:
-w, --wait
Wait for all killed processes to die. killall checks once per
second if any of the killed processes still exist and only
returns if none are left. Note that killall may wait forever if
the signal was ignored, had no effect, or if the process stays
in zombie state.
结论
Killall 对于新手来说可能不是小菜一碟,但它也不是很复杂。您需要练习它提供的命令行选项。我们已经讨论了其中的大部分内容,因此本教程应该是一个很好的起点。完成这些操作后,您可以通过前往其手册页来阅读有关该命令的更多信息。