You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

谷歌云VM启动脚本运行tmux并执行Python3脚本失败如何解决

问题原因
  • 核心原因1:tmux 的 new-session 命令后直接拼接执行命令时,只要该命令执行结束(不管是正常运行完成还是报错退出),tmux 会话就会自动销毁。你的 Python 脚本因为环境问题启动失败后,tmux 会话直接被关闭,所以你找不到对应的会话,也看不到报错信息。
  • 核心原因2:启动脚本执行时属于非交互式 shell 环境,通过 sudo -u 切换用户时不会自动加载该用户的 .bashrc、.profile 等配置文件,会出现以下异常:
    • 相对路径的脚本找不到
    • Python 依赖的环境变量(比如 Telegram Bot Token、自定义模块路径)缺失
    • 若你用了虚拟环境,虚拟环境也不会被激活
  • 附加问题:你当前脚本的 shebang 行写法错误,缺少根路径斜杠,应为 #!/bin/bash。
可行解决方案

你可以改为先创建后台 tmux 会话,再通过 send-keys 向会话发送执行命令,既可以避免命令执行失败会话直接销毁,也方便后续排查报错。修改后的启动脚本参考如下:

#!/bin/bash

# 替换为实际的用户名、会话名、脚本绝对路径
USER="你的实际用户名"
SESSION="自定义tmux会话名"
SCRIPT_PATH="/home/你的实际用户名/脚本所在目录/SCRIPT.py"

# 先加载用户环境变量、切换到用户目录,避免路径问题
sudo -H -u $USER bash -c "cd ~ && source ~/.profile"

# 新建空的后台tmux会话
sudo -H -u $USER tmux new-session -d -s $SESSION

# 向tmux会话发送执行脚本的命令,追加回车触发执行
sudo -H -u $USER tmux send-keys -t $SESSION "python3 $SCRIPT_PATH" C-m
  • 所有路径必须使用绝对路径,避免相对路径找不到文件的问题
  • 如果你的 Python 脚本使用了虚拟环境,把 python3 $SCRIPT_PATH 替换为虚拟环境 Python 的绝对路径即可,比如 /home/你的用户名/venv/bin/python3 $SCRIPT_PATH
  • 若后续脚本还是运行异常,你可以SSH登录后执行 tmux a -t 你的会话名 进入tmux会话,直接查看命令的报错输出排查问题

内容的提问来源于stack exchange,提问作者Eghan Dharmmabudhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:57:05