kill命令不能用于重定向

时间:2016-09-01 10:16:11

标签: bash redirect kill

好,所以我尝试使用

执行kill命令
$api_key = 'realapikey';

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

kill < ff // Doesn't work
cat ff | kill //Doesn't work

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

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

5 个答案:

答案 0 :(得分:2)

你试过这个吗?

kill $(cat ff)

答案 1 :(得分:1)

这也是:

$ cat ff|xargs kill

答案 2 :(得分:1)

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

kill -- $(<ff)

应该这样做。

如果你想逐个杀死它们并在中间做某事,你可以用pids创建一个数组并迭代它们:

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

答案 3 :(得分:0)

使用egrep(或grep -E)来解决某些空白异常的选项

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

哪个适用于看起来像这样的文件;

FF:

7688 7697 7705 7760 7764 7772 

    7785    7810    7817 
    7865 
    7874

8036 8097

答案 4 :(得分:0)

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

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

这意味着kill不接受来自标准输入的输入。