如何创建一个bash脚本,创建40个同步的程序实例?

时间:2010-02-08 06:54:48

标签: bash loops scripting

我是bashLinux的新手。 我有一个我写的程序,我想创建多个同时发生的实例。

现在,我通过打开10个新终端然后运行程序10次来执行此操作(我运行的命令是php /home/calculatedata.php

使用bash脚本执行此操作的最简单方法是什么? 此外,我需要知道如何杀死实例,因为它们正在运行无限循环。

谢谢!

6 个答案:

答案 0 :(得分:7)

您可以使用循环并使用&在后​​台启动流程:

for (( i=0; i<40; i++ )); do
   php /home/calculatedata.php &
done

如果这些进程是PHP运行的唯一实例,并且您希望将它们全部删除,最简单的方法是killall

killall php

答案 1 :(得分:5)

for instance in {1..40}
do
  php myscript &
done

答案 2 :(得分:4)

如何在后台运行php进程:

#!/bin/bash
for ((i=1;i<=40;i+=1)); do
  php /home/calculatedata.php &
done

您可以通过发出以下命令来终止运行PHP进程的所有后台实例:

killall php

确保您没有运行任何其他php进程,因为它们也将被杀死。 如果您有许多其他PHP进程,那么您可以执行以下操作:

ps -ef | grep /home/calculatedata.php | cut_the_pid | kill -9

答案 3 :(得分:1)

您可以使用简单的循环和终止“&amp;”来启动实例在后台运行每个作业:

INSTANCES=40
for ((i=0; $i<$INSTANCES; ++i))
do
    mycmd &
done

答案 4 :(得分:1)

如果你有seq(1)程序(你有可能拥有它),你可以用一种稍微更易读的方式来实现它,如下所示:

for n in $(seq 40); do
   mycmd &
done

在这种情况下,不使用n变量。 希望这会有所帮助。

答案 5 :(得分:-1)

此脚本是一个循环,可创建'while true;的实例;做:'循环。它继续进行作业,直到被取消为止,并且所有作业都在后台运行。 您可以为索引计数器添加变量,然后将:更改为代码。

while true; do while true; do :; done & done

停止:

killall bash