Linux 限制incrond生成的并发进程数

Linux 限制incrond生成的并发进程数,linux,bash,parallel-processing,gnu,inotify,Linux,Bash,Parallel Processing,Gnu,Inotify,我正在开发一个进程,最终将驻留在CentOS最新的虚拟机上,我正在Ubuntu 12.04 LTS中开发 因此,我将incron设置为使用IN_CLOSE_WRITE监视我的drop文件夹,以便在将文件写入时,在文件图像imagemagick上运行资源密集型脚本。这一切都很好;除非一次删除的文件太多。正如我所说的,脚本是相当资源密集型的,如果超过4个或更多的实例同时运行,我的开发机器将崩溃,最终的虚拟机将更加强大,但我预计可能会同时删除数百个文件 危险的因克伦塔布: /path/to/dropf

我正在开发一个进程,最终将驻留在CentOS最新的虚拟机上,我正在Ubuntu 12.04 LTS中开发

因此,我将incron设置为使用IN_CLOSE_WRITE监视我的drop文件夹,以便在将文件写入时,在文件图像imagemagick上运行资源密集型脚本。这一切都很好;除非一次删除的文件太多。正如我所说的,脚本是相当资源密集型的,如果超过4个或更多的实例同时运行,我的开发机器将崩溃,最终的虚拟机将更加强大,但我预计可能会同时删除数百个文件

危险的因克伦塔布:

/path/to/dropfolder IN_CLOSE_WRITE bash /path/to/resourceintensivescript.sh $@/$#
所以问题是:如何限制因克朗创造的工作岗位数量?我试着使用gnu并行,但不知道如何使它工作

例如:

/path/to/dropfolder IN_CLOSE_WRITE parallel --gnu -j 4 bash /path/to/resourceintensivescript.sh $@/$#
似乎什么都不做:/

以及:

最终丢失文件:p

有关如何处理此问题的想法?

您可以使用parallel附带的sem实用程序:

/path/to/dropfolder IN_CLOSE_WRITE sem --gnu --id myjobname -j 4 /path/to/resourceintensivescript.sh $@/$#
您可以使用parallel附带的sem实用程序:

/path/to/dropfolder IN_CLOSE_WRITE sem --gnu --id myjobname -j 4 /path/to/resourceintensivescript.sh $@/$#

一个非常基本的方法是简单地使用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

一个非常基本的方法是简单地使用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

对于其中的myjobname部分,我应该使用脚本的名称吗?这样行吗?或者我需要使用脚本调用的进程的名称,例如:convert?我对这个语法的初始测试似乎没有结果。。。我为incrontab工作的单独日志记录条目,但是,使用sem调用脚本的条目似乎没有启动任何进程:/myjobname只是一个id。如果需要,可以使用MyIDistead。我认为在等待脚本完成时,这仍然会生成许多并行的sem进程。对于其中的myjobname部分,我应该使用脚本的名称吗?这样行吗?或者我需要使用脚本调用的进程的名称,例如:convert?我对这个语法的初始测试似乎没有结果。。。我为incrontab编写的单独日志条目可以工作,但使用sem调用脚本的条目似乎不会启动任何进程:/myjobname只是一个id。如果需要,可以使用MyIdStead。我认为在等待脚本完成时,这仍然会生成许多并行sem进程。是的,这使事情保持一个沉闷的轰鸣声,并使“ol”的CPU和内存相当愉快;是的,这使事情保持沉闷的轰鸣声,并使“ol CPU和内存相当愉快;