如何通过单个Bash脚本在不同终端运行不同Python文件(各含独立PID)
解决多终端并行运行不同Python脚本的问题
看起来你现在的脚本是串行在同一个终端里依次执行的,这肯定达不到每个脚本在独立终端运行的需求。我来给你调整一下脚本,让每个Python文件都在新的终端窗口里启动,而且是并行运行的。
核心思路
树莓派默认用的是LX终端(lxterminal),我们可以直接调用终端命令,让它在新窗口里执行指定的Python脚本,同时用&把进程放到后台,这样脚本不用等前一个终端关闭就可以启动下一个。
修改后的启动脚本(记得把后缀改成.sh,因为这是Shell脚本不是Python脚本)
#!/bin/sh ###### STARTING UP NRF MODULE IN NEW TERMINAL ##### sleep 2 # 启动第一个终端运行NRF_MQTT.py lxterminal --command="cd ~/Desktop/RPI_GATEWAY/NRF24L01 && python NRF_MQTT.py" & sleep 5 ################################### #### STARTING UP TEST MODULE 1 IN NEW TERMINAL #### # 启动第二个终端运行TEST_PUB_1.py lxterminal --command="cd ~/Desktop/RPI_GATEWAY/TEST && python TEST_PUB_1.py" & sleep 2 ################################### #### STARTING UP YOUR THIRD SCRIPT IN NEW TERMINAL #### # 把下面的路径和文件名替换成你第三个Python文件的信息 lxterminal --command="cd ~/Desktop/RPI_GATEWAY/[第三个脚本的文件夹名] && python [第三个脚本名].py" &
关键细节说明
lxterminal --command="...":这是告诉LX终端打开一个新窗口,执行引号里的命令(先切换到脚本所在目录,再运行Python脚本)。&符号:把终端进程放到后台运行,这样你的启动脚本不会卡在第一个终端窗口,而是继续启动后面的终端。- 路径问题:用
~/代替你的home目录,避免相对路径出错;如果你的Python是3.x版本,记得把python改成python3。 - 终端保持打开(可选):如果希望脚本运行完后终端不关闭,可以把命令改成这样:
加lxterminal --command="cd ~/Desktop/RPI_GATEWAY/NRF24L01 && python NRF_MQTT.py; exec bash" &exec bash会在脚本结束后让终端保持交互状态。
最后一步:给脚本加执行权限
打开终端,进入脚本所在目录,执行:
chmod +x RPI_GATEWAY_LAUNCHER.sh
之后直接运行./RPI_GATEWAY_LAUNCHER.sh就能看到三个终端依次打开,各自运行对应的Python脚本了。
内容的提问来源于stack exchange,提问作者nishthapa
相关产品推荐
相关产品推荐

