需要检查多个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
计算返回的行数。
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
删除输出中的第一行,只有 headerswc -l
计算返回的行数。