2013-09-01 3 views
0

J'ai cette version basée sur Windows qui ouvre mes tâches en cours dans plusieurs threads. Cependant, il ouvre plusieurs threads mais acceptable. Je veux porter ceci à Linux? J'ai une connaissance limitée de Linux et espère donc que quelqu'un puisse aider ici.Portage du fichier de commandes Windows au script shell. Si possible, exécutez la tâche en parallèle

clean.bat

ant -DCorrelator.port="15800" clean 

* start_parallel.bat *

call clean.bat 
start "Engine 1500" ant -Dengine.port="15800" -Dfamily.one="true" -Dfamily.two="false" start 
start "Engine 1505" ant -Dengine.port="15805" -Dfamily.one="false" -Dfamily.two="true" start 
+0

cependant, il ouvre plusieurs fenêtres de commande-** ** encore acceptable. – Nishant

Répondre

0

Je dois admettre que je ne suis pas sûr que je comprends parfaitement votre scénario, mais pour courir tâches en parallèle dans Linux, vous pouvez les mettre dans le backgrund en utilisant &.

Exemple:

start "Engine 1500" ant start & 
start "Engine 1505" ant start & 

Pour appeler votre autre scénario, exécutez simplement à partir de votre premier script shell.

Donc, au total vous auriez:

clean.sh:

#!/bin/sh 
ant -DCorrelator clean 

start_parallel.sh

#!/bin/sh 
clean.sh 
start "Engine 1500" ant -Dengine.port="15800" -Dfamily.one="true" -Dfamily.two="false" start & 
start "Engine 1505" ant -Dengine.port="15800" -Dfamily.one="false" -Dfamily.two="true" start & 

Assurez-vous de faire les deux scripts exécutables en utilisant chmod:

chmod +x clean.sh 
chmod +x start_parallel.sh 

Et Linux ne regarde que dans votre chemin (echo $PATH) pour les scripts exécutables. Si vous voulez exécuter des scripts dans un répertoire différent, vous devez indiquer au moins son chemin relatif. Si le script est dans votre répertoire en cours faire:

./start_parallel.sh 

Et vous aussi appeler clean.sh comme ./clean.sh dans votre script. Pour éviter cela, je vous suggère de placer les scripts dans un répertoire de votre chemin, en général /usr/local/bin/ ou de créer un répertoire bin dans votre répertoire personnel et de l'ajouter à votre chemin en utilisant for example .profile`.

Cheers.

+0

vous avez presque cloué avec presque une exception Dans start_parallel.sh il ne reconnaîtra pas la commande windows "start" Engine 1500 "". Je sais que je suis trop difficile. Merci une tonne :) – Nishant

0

clean.sh

#!/bin/bash 
# Note: The header above is only necessary if you intend to call the script as standalone as well. 
ant -DCorrelator.port="15800" clean 

start_parallel.sh

#!/bin/bash 
source ./clean.sh 
konsole -p tabtitle="Engine 1500" -e ant -Dengine.port="15800" -Dfamily.one="true" -Dfamily.two="false" start 
konsole -p tabtitle="Engine 1505" -e ant -Dengine.port="15805" -Dfamily.one="false" -Dfamily.two="true" start 

Il fonctionne avec konsole mais je vais essayer de mettre à jour avec d'autres terminaux.

Exécuté avec bash start_parallel.sh.

Mise à jour pour XTerm

... 
xterm -T "Engine 1500" -e ant -Dengine.port="15800" -Dfamily.one="true" -Dfamily.two="false" start & 
xterm -T "Engine 1505" -e ant -Dengine.port="15805" -Dfamily.one="false" -Dfamily.two="true" start & 
+0

Je ne l'ai pas essayé mais en regardant ça a l'air ça va marcher. Merci – Nishant

Questions connexes