根据文件中给出的进程 ID 递归终止进程

根据文件中给出的进程 ID 递归终止进程

我希望能够终止一些进程。我知道进程ID(在文件中给出),我不想一一进行。有什么方法可以做到类似kill递归调用命令并通过文件或标准输入为其提供输入,就像我们对rm命令所做的那样......

答案1

给定一个文件pids.txt,每行一个进程 ID,您可以这样做

xargs kill <pids.txt

这将kill使用文件中的进程 ID 调用该实用程序。

其他解决方案包括

kill $(cat pids.txt)

恕我直言,这不是那么优雅,并且

while read pid; do
    kill "$pid"
done <pids.txt

为了做一件简单的事情要写很多东西。


请注意,上述变体都无法验证文本文件中的进程 ID 是否对应于相同在创建文件时附加了进程 ID 的进程。

在 Linux 系统上,每个新进程的进程 ID 通常都会递增 1,并且当使用了允许的最大进程 ID 时,会从某个较小的数字中分配更多 ID。这意味着随着时间的推移,进程 ID 会被重复使用。

在某些系统上,例如 OpenBSD,进程 ID 是随机分配的。在这里,一段时间后也会重新使用旧的进程 ID。

相关内容