为什么“killall killall”不起作用?

use*_*001 3 linux terminal bash shell ubuntu

可能的重复:
意外的killall行为

如果killall killall从终端运行命令(我使用 KDE 4 的 Konsole),它说它找不到任何进程。 killall运行,寻找一个被调用的进程killall,应该找到它自己并杀死它,但它没有这样做。为什么?

小智 11

也许是因为它是为了忽略自己而编写的?

::外观在源代码killall::

http://src.gnu-darwin.org/src/usr.bin/killall/killall.c.html

是的:

if (thispid == mypid)
    continue;
Run Code Online (Sandbox Code Playgroud)

  • 的确!请记住,killall 支持正则表达式。正则表达式匹配可能过于急切并匹配 killall 本身,同时还匹配预期的一组进程名称。例如`killall --regex 'ki.*'` 或类似的。没有这个正则表达式支持,检查 self 的功能没有多大意义,因为只有 `killall` 可以匹配 `killall`。如果没有指定`--regex`,他们的代码应该跳过测试。(顺便说一句,我发现没有一个 `--glob` 选项。你很少需要在进程名称上使用完整的 ERE。如果我想杀死 `gnome-` 一切,`gnome-* 怎么样? `. (3认同)

Mau*_*fer 9

男人杀戮

killall 进程永远不会杀死自己(但可能会杀死其他 killall 进程)。