kill 命令不适用于重定向

kill command doesn't work with redirection

好的,所以我正在尝试使用

执行kill命令
kill < ff // Doesn't work
cat ff | kill //Doesn't work

其中 ff 是包含 pid 列表的文本文件。

7688 7697 7705 7760 7764 7772 7785 7810 7817 7865 7874 8036 8097

上述两个命令的 kill 输出如下:

kill: usage:kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]

你试过吗?

kill $(cat ff)

?

这个也是:

$ cat ff|xargs kill

shell 内置 kill 或外部 /bin/kill 不通过标准输入流获取进程 ID(或作业 ID)。您需要将它们作为参数传递给 kill,因此:

kill -- $(<ff)

应该做。

如果你想一个一个地杀死它们并在两者之间做一些事情,你可以用 pid 创建一个数组并迭代它们:

pids=( $(<file.txt) ) && for i in "${pids[@]}"; do echo "killing $i"; kill -- "$i"; done

一个使用 egrep(或 grep -E)的选项解决了一些空白异常

egrep -o "[0-9]+" ff | kill "$(cat -)"

这将适用于如下所示的文件;

ff:

7688 7697 7705 7760 7764 7772 

    7785    7810    7817 
    7865 
    7874

8036 8097

感谢您的回复。这两个都有效。

kill $(cat ff)
kill -- $(<ff)

这意味着 kill 不会从标准输入中获取输入。