如何杀死zsh中的所有后台进程?

d33*_*tah 12 linux jobs background zsh

在标题中 - 如何杀死zsh中的所有后台进程?

ZyX*_*ZyX 11

alias killbg='kill ${${(v)jobstates##*:*:}%=*}'
Run Code Online (Sandbox Code Playgroud)

.它是zsh,不需要外部工具.

如果你想杀掉工号N:

function killjob()
{
    emulate -L zsh
    for jobnum in $@ ; do
        kill ${${jobstates[$jobnum]##*:*:}%=*}
    done
}
killjob N
Run Code Online (Sandbox Code Playgroud)


小智 5

一个应该builtin与另一个killzsh内置命令一起使用zsh内置命令:

builtin kill %1
Run Code Online (Sandbox Code Playgroud)

作为kill还一个单独的二进制文件util-linux包(上游位于)/usr/bin/kill其中不支持的作业kill: cannot find process "%1")。

使用关键字builtin来避免名称冲突或enablekill内置的,如果它被禁用。


在shell中有一个禁用和启用内置命令(即shell自己的命令,如cdkill)的概念,在您可以启用(禁用)kill内置命令:

enable kill
Run Code Online (Sandbox Code Playgroud)

问题disable检查内建被禁用(并enable看到启用的)。