分享

控制shell脚本并发进程数

 ala咪s 2017-08-16

控制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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多