我正在做一个shell脚本,发生未知情况。我必须执行一定数量的进程,让我们假设12个。但是我想每次限制't'的执行次数。所以如果't'是3,我必须执行3个进程,然后是3,3,最后是3.但是我想自动执行,所以我需要监视正在运行的进程,并且当其中一个进程结束时,我必须执行一个剩下的进程。如何控制正在运行的进程的数量?
经过一番研究,我发现下面的命令:
launch backgroundprocess &
PROC_ID=$!
while kill -0 "$PROC_ID" >/dev/null 2>&1; do
echo "PROCESS IS RUNNING"
done
echo "PROCESS TERMINATED"
通过cuonglm建议。
这可以帮助了解某个进程是否正在运行。我试图创建12个进程并将它们保存在3个不同的变量中,但它不能正常工作。
processors=3
counter=0
for A in {1..12}
do
counter=$((counter+1))
backgroundprocess &
PID[$A]=$!
while [ $counter -eq $processors ]
do
if kill -0 "$PID[1]" >/dev/null 2>&1;
then
counter=$(($counter-1))
break
fi
done
done
你们有没有人知道我该怎么做这项工作?
虽然没有什么错'RM -f “$ {} tmp_file”'中,*支柱*机箱也是没有用处的存在。 'rm -f“$ tmp_file”'是等价的。 (这同样适用于下面的'touch') –
特别是如果你认为脚本生成的文件名是数字列表;我的意思是文件名中没有特殊的字符。 谢谢您的信息。我也会看一下手册页。 –