控制shell脚本并发进程数
shell命令后面加&,可以让这条shell命令异步的执行。例如:
sleep 10 &
执行这条命令后,并不会阻塞10秒,而是立即返回。
如果将这种方法用在while循环中,则可以实现多进程并行处理。例如,test.sh文件为:
while read line; do sleep 10 & done
在执行ls -l | test.sh 时,会有多个进程并行启动,进程数等于ls -l返回结果的行数。
而有时为了避免并发进程数过多,导致机器卡死,需要限制并发的数量。以下代码实现了该功能:
while read line; do
joblist=($(jobs -p))
while (( ${#joblist[*]} >= 20 ))
do
sleep 1
joblist=($(jobs -p))
done
sleep 10 &
done
这样,可以将并发进程数控制在20个。
Date: 2013-03-12 17:24:59 CST
HTML generated by org-mode 6.21b in emacs 23

本文介绍了如何在shell脚本中控制并发进程的数量。通过在命令后添加&使其异步执行,结合while循环实现多进程并行处理。当需要限制进程数以避免过多并发导致系统卡顿时,提供了一段代码,能将并发进程限制在20个以内。
5825

被折叠的 条评论
为什么被折叠?



