首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制incrond生成的并发进程数。

限制incrond生成的并发进程数。
EN

Stack Overflow用户
提问于 2013-08-07 21:19:46
回答 2查看 1.4K关注 0票数 2

我正在开发一个进程,最终将驻留在一个CentOS (最新的)虚拟机上,我正在Ubuntu12.04LTS中开发。

因此,我已经设置了IN_CLOSE_WRITE来监视我的drop文件夹,这样当一个文件被写入文件时,就会在文件上运行一个相当资源密集的脚本(图片,imagemagick)。这一切都很好,除非同时删除了太多的文件。正如我所说的,这个脚本相当耗费资源,如果有4个以上的实例同时运行,那么我的开发机器就会崩溃(最终的虚拟机将更加强大,但我预见到可能会同时丢弃数百个文件!)

危险的无头怪:

代码语言:javascript
复制
/path/to/dropfolder IN_CLOSE_WRITE bash /path/to/resourceintensivescript.sh $@/$#

因此,问题是:如何限制因英伦而产生的就业数量?我试着用gnu并行,但不知道如何使它工作.

例如:

代码语言:javascript
复制
/path/to/dropfolder IN_CLOSE_WRITE parallel --gnu -j 4 bash /path/to/resourceintensivescript.sh $@/$#

似乎什么也没做

以及:

代码语言:javascript
复制
/path/to/dropfolder IN_CLOSE_WRITE;IN_NO_LOOP bash /path/to/resourceintensivescript.sh $@/$#

最后丢失文件:P

关于如何处理这件事的想法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-07 21:36:55

一个非常基本的方法是简单地使用grep并计算进程..。类似于:

代码语言:javascript
复制
    processName=myprocess

    if [ $(ps -ef |grep -v grep|grep ${processName} |wc -l) -le 4 ]
    then
      do something
    fi

在循环建议中:

代码语言:javascript
复制
processName=myprocess

while true
do
  if [ $(ps -ef |grep -v grep|grep ${processName} |wc -l) -le 4 ]
  then
    do something
    break
  fi
  sleep 5
done
票数 2
EN

Stack Overflow用户

发布于 2013-08-07 21:34:34

您可以使用并行的sem实用程序:

代码语言:javascript
复制
/path/to/dropfolder IN_CLOSE_WRITE sem --gnu --id myjobname -j 4 /path/to/resourceintensivescript.sh $@/$#
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18114010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档