我正在开发最终将驻留在CentOS(最新)虚拟机上的过程,我正在Ubuntu 12.04 LTS中进行开发...

因此,我将incron设置为使用IN_CLOSE_WRITE监视我的放置文件夹,以便在将文件写入其中时,在该文件上运行相当耗费资源的脚本(Images,imagemagick)。这一切都很好;除非一次删除太多文件。正如我所说,脚本相当耗资源,如果同时运行4个以上的实例,我的开发机就会瘫痪(最终虚拟机会更强大,但我预见到实例中可能会丢失数百个文件)立刻!)

危险incrontab:

/path/to/dropfolder IN_CLOSE_WRITE bash /path/to/resourceintensivescript.sh $@/$#

所以问题是:如何限制被入侵者产生的工作数量?我尝试使用gnu parallel但无法弄清楚如何使它工作...

例如:
/path/to/dropfolder IN_CLOSE_WRITE parallel --gnu -j 4 bash /path/to/resourceintensivescript.sh $@/$#

似乎无能为力:/

和:
/path/to/dropfolder IN_CLOSE_WRITE;IN_NO_LOOP bash /path/to/resourceintensivescript.sh $@/$#

最终丢失文件:P

关于如何处理这个想法?

最佳答案

一种非常基本的方法是简单地使用grep并计数进程...类似:

    processName=myprocess

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

与循环建议:
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

关于linux - 限制incrond产生的并发进程数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18114010/

10-09 13:41