2015-02-13 4 views
0

Обычно я запускаю двух разных работников-ретрансляторов в разных терминалах с помощью команды python, после того как эти рабочие-редукторы готовятся, я выполняю клиентский файл, который отправляет запрос обеим слушателям.Выполнять несколько сценариев параллельно с помощью сценария оболочки

Я пытался поставить все три команды в shellscript и выполнять их на одном дыхании, но не смог

#!/bin/sh 
python /root/Desktop/karim/temp_git/ATD_final/ATD_allClass/classifier_allClass.py 
python /root/Desktop/karim/temp_git/ATD_final/ATD_lessClass/classifier_lessClass.py 
python ans_type.py 1 

, который дает:

folders = [f for f in sorted(listdir(container_path)) 
OSError: [Errno 2] No such file or directory: '/root/Desktop/karim/temp_git/ATD_final/ATD_pylink/trec_data' 

после этого я пытался поставить эту команду питона в .sh в той же директории и исполненных shellscripts

allClass.sh:

#!/bin/sh 
python /root/Desktop/karim/temp_git/ATD_final/ATD_allClass/classifier_allClass.py 

lessClass.sh

python /root/Desktop/karim/temp_git/ATD_final/ATD_lessClass/classifier_lessClass.py 

и final.sh:

#!/bin/sh 
sh /root/Desktop/karim/temp_git/ATD_final/ATD_allClass/allClass.sh 
sh /root/Desktop/karim/temp_git/ATD_final/ATD_lessClass/less_lessClass.py 
python ans_type.py 1 

final.sh

#!/bin/sh 
sh /root/Desktop/karim/temp_git/ATD_final/ATD_allClass/allClass.sh 
sh /root/Desktop/karim/temp_git/ATD_final/ATD_lessClass/less_lessClass.py 
python ans_type.py 1 

, который дает:

sh: 0: Can't open /root/Desktop/karim/temp_git/ATD_final/ATD_allClass/allClass.sh 
link-grammar: Info: Dictionary found at /usr/share/link-grammar/en/4.0.dict 
Traceback (most recent call last): 
+2

Почему «/ root/Desktop/karim/temp_git/ATD_final/ATD_pylink/trec_data» в рабочем столе root, а не в _your_ Desktop? Что означает 'readlink -e/root/Desktop/karim/temp_git/ATD_final/ATD_pylink/trec_data' печать? –

ответ

0

Я думаю, ваша проблема в том, что рабочие казнятся один за другим и не в одно и то же время. Когда вы запускаете все три сценария python в разных терминалах, как и раньше, они выполняются одновременно. Вы можете попробовать запустить три сценария в одном скрипте bash, но с тремя разными подоболочками. т.е .:

(python path/to/first/worker/FirstWorker.py) 
(python path/to/second/worker/SecondWorker.py) 
(python path/to/client/Client.py) 

Согласно http://www.tldp.org/LDP/abs/html/subshells.html, вы называете подоболочку подобное. Может быть, это будет даже полезно, чтобы начать все из них в фоновом режиме с & так:

(python path/to/first/worker/FirstWorker.py) & 
(python path/to/second/worker/SecondWorker.py) & 
(python path/to/client/Client.py) & 

Вы можете даже перенаправить вывод трудящихся, но я точно не знаю, как это сделать ... Надеюсь, что это помогает ...

+0

спасибо, но уже попробовал это, проблема заключается в том, что он не смог найти путь, к которому обращаются в 'FirstWorker.py', дает ошибку, например' OSError: [Errno 2] Нет такого файла или каталога: '/ root/Desktop/karim/temp_git/ATD_final/ATD_pylink/trec_data'' – nlper

Смежные вопросы