控制用户进程数的shell脚本

Pab*_*blo 5 shell-script control-flow matlab

我必须启动一个程序的总数,NUMTOT(可以是任何,C,Mathematica,ns-2 ...数学环境)。问题是运行这些进程的计算机只允许最大执行次数,例如 MAX,(MAX < NUMTOT)。

我在终端中使用以下行运行这些程序

./run.sh -d directory num
Run Code Online (Sandbox Code Playgroud)

重复,其中 run.sh 是我调用数学程序的脚本;directory 是我的程序所在的目录,num 表示新执行的次数(integer*num = NUM​​)。脚本“run.sh”使用“目录”(程序)的副本创建“num”个目录,并启动“num”个程序实例。在我的情况下是 Matlab 实例。

我想要一个脚本来自动跟踪正在运行的进程数量以及最大数量何时减少到(MAX-num),因为'num'已经完成,然后启动Matlab的下一个'num'模拟,直到总数完成了 NUM 次模拟。

如果脚本能够在只有一个程序刚刚完成时调用下一个程序,就能够维护 MAX 可能的进程,那就更好了。

实际上,要知道正在运行的进程数,我运行以下脚本

ps axu |grep plopez|grep simulacion|grep MATLAB|awk '{ $2} END{print NR}'
Run Code Online (Sandbox Code Playgroud)

这给出了此时运行的总 Matlab。

我怎样才能仅从一个脚本中进行整套模拟?

XZS*_*XZS 1

我建议不要定期检查正在运行的实例的数量,而是建议编写一个脚本,一次又一次地运行该程序,直到NUM达到该数量,并并行启动该脚本MAX多次。

您还可以捕获SIGCHLD子进程退出时发出的信号。必须首先使用 启用此功能set -o monitor更详细的示例和替代方案可以在Stackoverflow 上的线程中找到。