我是bash
和Linux
的新手。 我有一个我写过的程序,我想创建多个同时发生的实例。如何创建一个创建程序的40个同时实例的bash脚本?
现在,我通过开辟10级新的终端,然后运行程序10次做到这一点(我运行的命令是php /home/calculatedata.php
什么是做到这一点使用bash脚本的最简单的方法是什么? 还,我需要知道如何杀死实例,因为他们正在运行一个无限循环
谢谢!
我是bash
和Linux
的新手。 我有一个我写过的程序,我想创建多个同时发生的实例。如何创建一个创建程序的40个同时实例的bash脚本?
现在,我通过开辟10级新的终端,然后运行程序10次做到这一点(我运行的命令是php /home/calculatedata.php
什么是做到这一点使用bash脚本的最简单的方法是什么? 还,我需要知道如何杀死实例,因为他们正在运行一个无限循环
谢谢!
您可以在后台使用循环和启动过程与&
:
for ((i=0; i<40; i++)); do
php /home/calculatedata.php &
done
如果这些进程是你已经运行PHP的唯一实例,并要杀死他们,最简单的方法是killall
:
killall php
如何在后台运行的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
您可以启动实例用一个简单的循环,并终止“&”,以在后台运行的每个作业:
INSTANCES=40
for ((i=0; $i<$INSTANCES; ++i))
do
mycmd &
done
谢谢,是否有一种简单的方法来一次终止脚本的所有实例? – chris 2010-02-08 07:01:32
for instance in {1..40}
do
php myscript &
done
+1使用大括号扩展 – 2010-02-08 07:56:34
如果你有SEQ(1)程序(可能你拥有它),你可以在一个稍微更可读的方式做到这一点,就像这样:
for n in $(seq 40); do
mycmd &
done
在这种情况下,不使用n变量。 希望这有助于
T
您可以使用大括号扩展来模拟seq。 {1..40} – ghostdog74 2010-02-08 07:42:31
当我说“更具可读性”时,我的意思是比C-for循环更具可读性。当然,{1..40}的表单至少可以读取。 – Tjunier 2010-02-08 07:44:59
所以在这种情况下,程序是“PHP”? – chris 2010-02-08 07:02:05
@chris:是的,这将是PHP的脚本名称作为参数。 (我更新了他的回答) – sth 2010-02-08 07:05:44
感谢您的帮助! – chris 2010-02-08 07:07:04