2010-02-08 9 views
5

Jestem nowy w bash i Linux. Mam program, który napisałem, że chcę utworzyć wiele jednoczesnych wystąpień.Jak utworzyć skrypt bash, który tworzy 40 jednoczesnych instancji programu?

Teraz robię to poprzez otwarcie 10 nowych terminali, a następnie uruchomić program 10 razy (komenda biegnę jest php /home/calculatedata.php

Co jest najprostszym sposobem, aby to zrobić za pomocą skryptu bash? także muszę wiedzieć, jak zabić instancje ponieważ są one uruchomione w nieskończoną pętlę

Dzięki !!

Odpowiedz

5

można użyć pętli i uruchomić procesy w tle z &.

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

Jeśli procesy te są tylko przypadki PHP zostały uruchomione i chcesz je zabić wszystko, najprostszym sposobem jest killall:

killall php 
+0

więc w tym przypadku program jest "php"? – chris

+0

@chris: tak, to php z nazwą skryptu jako parametrem. (Zaktualizowałem odpowiedź) – sth

+0

dzięki za pomoc! – chris

3

Jak o prowadzenie procesu php w tle:

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

można rozwiązać wszystkie instancje tych uruchomiony proces PHP tle wydając:

killall php 

Upewnij się, że nie masz uruchomionych żadnych innych procesów php, ponieważ one również zostaną zabite. Jeśli masz wiele innych procesów PHP, to zrobić coś takiego:

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

można uruchomić instancje z prostą pętlę i końcowym „&” do uruchomienia każdego zadania w tle:

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

dziękuję, czy istnieje prosty sposób na zakończenie instancji skryptu naraz? – chris

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

+1 za używanie rozszerzania nawiasów klamrowych –

0

jeśli masz nast (są szanse masz go) (1) Program, można to zrobić w nieco bardziej czytelny sposób, jak to:

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

W tym przypadku zmienna n nie jest używana. Nadzieja to pomaga

T

+0

można użyć rozwinięcia nawiasów klamrowych do symulacji seq. {1..40} – ghostdog74

+0

Kiedy powiedziałem "bardziej czytelny", miałem na myśli bardziej czytelny niż C-podobny dla pętli. Oczywiście formularz z {1..40} jest co najmniej tak czytelny. – Tjunier

Powiązane problemy