首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用shell脚本并行执行多个脚本

使用shell脚本并行执行多个脚本
EN

Stack Overflow用户
提问于 2015-02-13 19:35:30
回答 1查看 1.1K关注 0票数 0

通常我使用python命令在不同的终端启动两个不同的齿轮工人,一旦这些齿轮工人准备好了,我就执行客户端文件,该文件向两个监听工人发送请求。

我试图将所有这三个命令都放在shellscript中,并一次性执行它们,但无法实现

代码语言:javascript
复制
#!/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

这就给出了:

代码语言:javascript
复制
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'

之后,我尝试将这个python命令放在同一目录下的.sh中,并执行外壳脚本

allClass.sh:

代码语言:javascript
复制
#!/bin/sh
python /root/Desktop/karim/temp_git/ATD_final/ATD_allClass/classifier_allClass.py

lessClass.sh

代码语言:javascript
复制
python /root/Desktop/karim/temp_git/ATD_final/ATD_lessClass/classifier_lessClass.py

在final.sh中:

代码语言:javascript
复制
#!/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

代码语言:javascript
复制
#!/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

这就给出了:

代码语言:javascript
复制
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):
EN

回答 1

Stack Overflow用户

发布于 2015-02-13 19:51:47

我认为,你的问题是,工人们一个接一个地被处死,而不是同时被处死。当您像以前一样在不同的终端中启动所有三个python脚本时,它们将被并发执行。您可能想尝试在一个bash-script中启动这三个脚本,但是使用三个不同的子subshells。即:

代码语言:javascript
复制
( 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的说法,您可以这样调用一个子subshell。也许用&在后台启动所有这些代码会很有帮助,如下所示:

代码语言:javascript
复制
( python path/to/first/worker/FirstWorker.py ) &
( python path/to/second/worker/SecondWorker.py ) &
( python path/to/client/Client.py ) &

您甚至可以重定向工人的输出,但我不太确定如何做到这一点…希望这能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28498692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档