在不同的shell窗口中启动2个并行进程

时间:2015-07-24 06:37:29

标签: python shell ubuntu multiprocessing

我有两个功能:用于在特定端口上启动Server。类似的东西:

from Multiprocessing import Process
import sys

def start_server1(port1):
  os.system("server1 --port %s" % port1)
def start_server2(port2):
  os.system("server2 --port %s" % port2)

port1 = arg.sys[1]
port2 = arg.sys[2]
p1 = Process(target=start_server1, args=(port1,))
p2 = Process(target=start_server2, args=(port2,))

这允许我在我的脚本中从terminal启动两个服务器,如

>>>python servers.py 8000 8001

但是,预计两台服务器都会显示很多跟踪,我希望分别看到它们。所以问题是:如何使脚本从一个terminal shell执行,进程p1将在新shell和第二个进程p2中启动?

感谢您提供建议和建议

1 个答案:

答案 0 :(得分:1)

您可以在文件中重定向每个进程的输出。

os.system("server1 --port %s > server1.log" % port1)

然后,在单独的shell中的每个日志上运行tail命令以监视它们。

tail -f server1.log

但是,如果您不想将这些进程的输出存储在文件中并想要单独的shell解决方案,则可以使用“xterm -e”选项。

xterm的-e选项允许在单独的xterm窗口中运行shell命令。

os.system('xterm -e "server1 --port %s"'% port)