如何使用Bash同时启动多个不同端口的Tornado实例?
解决Tornado多实例同时启动的问题
你碰到的问题确实很常见——默认情况下Bash会阻塞式执行每个命令,必须等前一个进程完全结束才会运行下一个。要让这三个Tornado实例同时启动,只需要在每个命令末尾加上&符号,把进程放到后台运行即可。
修改后的基础脚本
#!/bin/bash #start tornado instances in different ports python startup.py --port="8081" & python startup.py --port="8082" & python startup.py --port="8083" &
额外优化建议
如果不想让各个实例的输出混在一起(方便后续排查问题),可以把每个进程的日志单独输出到对应端口的日志文件里:
#!/bin/bash #start tornado instances with separate logs python startup.py --port="8081" >> tornado_8081.log 2>&1 & python startup.py --port="8082" >> tornado_8082.log 2>&1 & python startup.py --port="8083" >> tornado_8083.log 2>&1 &
这里>> tornado_8081.log是把标准输出追加到日志文件,2>&1是把错误输出也重定向到同一个文件,确保所有运行日志都能被完整记录。
另外,如果希望脚本一直保持运行状态,直到所有后台的Tornado进程都结束,可以在脚本最后加上wait命令:
#!/bin/bash #start tornado instances and wait for all to exit python startup.py --port="8081" >> tornado_8081.log 2>&1 & python startup.py --port="8082" >> tornado_8082.log 2>&1 & python startup.py --port="8083" >> tornado_8083.log 2>&1 & wait
这样脚本会持续运行,直到你手动停止所有Tornado进程,或者它们自身正常退出。
内容的提问来源于stack exchange,提问作者Casey Cao
相关产品推荐
相关产品推荐

