我希望能够终止一些进程。我知道进程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。