Raspberry Pi 3B+开机并行运行Python脚本异常问题求解
Raspberry Pi 开机并行运行两个Python脚本的解决方案
一、正确的后台启动Bash脚本
创建start_scripts.sh脚本,确保tmux会话在后台独立创建:
#!/bin/bash # 配置crontab缺失的环境变量 export PATH=/usr/bin:/bin:/usr/local/bin # 创建后台会话运行第一个脚本,输出重定向到日志 tmux new-session -d -s script1 'python3 /绝对路径/script1.py >> /绝对路径/script1.log 2>&1' # 创建后台会话运行第二个脚本,输出重定向到日志 tmux new-session -d -s script2 'python3 /绝对路径/script2.py >> /绝对路径/script2.log 2>&1'
执行以下命令给脚本添加执行权限:
chmod +x /绝对路径/start_scripts.sh
二、Crontab配置
编辑用户crontab:
crontab -e
添加开机启动命令(注意用绝对路径):
@reboot /bin/bash /绝对路径/start_scripts.sh >> /绝对路径/startup.log 2>&1
三、核心问题排查与注意事项
- 必须加
-d参数:tmux的new-session命令如果不加-d,会直接进入会话,导致第二个命令无法执行,这是你之前会话丢失的核心原因。 - 绝对路径优先:crontab的运行环境没有完整的PATH,所有脚本、命令都要用绝对路径,比如
python3可以换成/usr/bin/python3确保能找到。 - 日志权限检查:确保日志文件所在目录有写入权限,比如用用户目录下的
~/logs/代替系统目录,避免权限不足导致脚本崩溃。 - 验证会话状态:开机后执行
tmux ls可以直接查看所有后台会话,不用逐个attach切换。
四、无tmux替代方案
如果tmux仍有异常,可改用nohup直接后台运行,脚本更简洁:
#!/bin/bash export PATH=/usr/bin:/bin:/usr/local/bin nohup /usr/bin/python3 /绝对路径/script1.py >> /绝对路径/script1.log 2>&1 & nohup /usr/bin/python3 /绝对路径/script2.py >> /绝对路径/script2.log 2>&1 &
内容的提问来源于stack exchange,提问作者Maurits
相关产品推荐
相关产品推荐

