我是bash
和Linux
的新手。
我有一个我写的程序,我想创建多个同时发生的实例。
现在,我通过打开10个新终端然后运行程序10次来执行此操作(我运行的命令是php /home/calculatedata.php
使用bash脚本执行此操作的最简单方法是什么? 此外,我需要知道如何杀死实例,因为它们正在运行无限循环。
谢谢!
答案 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