免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2453 | 回复: 5
打印 上一主题 下一主题

shell中怎样控制打开的进程数量 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-22 14:56 |只看该作者 |倒序浏览
在我的主程序中,会调用一个子程序,这个子程序执行的时间是不确定的,但是我又要控制子程序打开的数量,不能超过定义,然后有子进程执行完了,执着执行下一个,在代码中类似:

  1. for file_name in file_list
  2. do   
  3.   nohup process file_name &
  4. done
复制代码

我现在的基本思路是定义3个全局的环境变量(假定允许执行的process 只有3个),inst1 ,inst2,inst3
初始的时候定义为0,如果执行的话,定义为1,执行完成时,重新定义为0

  1. inst1=0;export inst1
  2. inst2=0;export inst2
  3. inst3=0;export inst3
  4. i=0
  5. for file_name in file_list
  6. do
  7.   while [ 1 -eq 1 ]
  8.    do
  9.        if [ $i -eq 3 ]
  10.             sleep 5
  11.             i=0
  12.        fi
  13.        i=`expr $i +1`
  14.        if [ $inst(i) = 0 ];then    #这时简写,insti的调用要用eval声明一下,不然无法调用.
  15.           nohup process file_name insti &
  16.           return #退出while循环,继续处理下一个文件
  17.        fi     
  18.    done
  19. done

复制代码

这种方式对我来讲,肯定是能实现的,只是想是不是有更好的方法来控制,大家来帮我一起想一想吧,谢谢!

论坛徽章:
0
2 [报告]
发表于 2007-12-22 15:09 |只看该作者
用pgrep 可以看出有多少进程,小于三行就启动新的子进程

论坛徽章:
0
3 [报告]
发表于 2007-12-22 15:12 |只看该作者
shell的进程有时候可以看到的是里面的一些语句,不是process这个名字呢?

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
4 [报告]
发表于 2007-12-22 20:18 |只看该作者

论坛徽章:
0
5 [报告]
发表于 2007-12-22 21:04 |只看该作者
Thanks!
有收获,测试一下

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
6 [报告]
发表于 2007-12-22 23:02 |只看该作者
limits ?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP