需要检查多个pid是否执行完毕

need to check wheter multiple pid are finished execution

pid_list="21232 21231 43432" # same can be put in an array as well

我是运行一堆后台命令,使用$i获取它的pid。我如何检查它是否完成。

试试这个:

ps -ef | egrep $(echo $pid_list | sed 's/ /|/g') | grep -v grep | wc -l

如果输出为 0,则表示进程已完成。

有一种方法可以查询 ps 以获取有关特定 PID 或 PID 列表的信息。

这应该可以解决您的问题。如果此命令 returns 不是零,则列表中至少有一个 PID 仍 active/not 已完成。

ps -p $(echo ${pid_list} | sed 's/\ /,/g') | tail -n +2 | wc -l

解释:

  • ps -p 接受 comma-delimited PID 列表以获取其信息。
  • sed 's/\ /,/g' 将 space 分隔符替换为逗号
  • tail -n +2 删除输出中的第一行,只有 headers
  • wc -l 计算返回的行数。