如何在谷歌云虚拟机启动脚本中运行tmux会话,脚本不生效怎么办
谷歌云虚拟机启动脚本tmux执行失败修复方案
- 修复shebang格式错误
你当前脚本的首行#! /bin/bash中间存在多余空格,会导致系统无法正确识别脚本解释器,修改为#!/bin/bash即可。 - 补全所有资源的绝对路径
启动脚本运行时未加载用户环境变量,无法通过相对路径找到命令和文件。先在虚拟机终端执行以下命令获取各资源的绝对路径:
替换后的脚本示例如下,若存在终端相关报错可添加which tmux which python3 realpath /home/MyUser/MyFile.py-e TERM=xterm参数指定终端类型:#!/bin/bash sudo -H -u MyUser /usr/bin/tmux new-session -e TERM=xterm -d -s discord '/usr/bin/python3 /home/MyUser/MyFile.py' - 添加网络等待逻辑
谷歌云启动脚本默认在实例初始化阶段就会运行,此时网络可能未完全就绪,如果你的Python脚本依赖网络访问,需要添加等待逻辑:#!/bin/bash # 等待10秒确保网络和用户环境加载完成 sleep 10 sudo -H -u MyUser /usr/bin/tmux new-session -e TERM=xterm -d -s discord '/usr/bin/python3 /home/MyUser/MyFile.py' - 添加日志输出排查问题
如果修改后仍然不生效,可以在脚本中添加日志重定向,定位具体报错:
实例启动后执行#!/bin/bash # 所有输出写入日志文件方便排查 exec > /var/log/tmux_autostart.log 2>&1 sleep 10 sudo -H -u MyUser /usr/bin/tmux new-session -e TERM=xterm -d -s discord '/usr/bin/python3 /home/MyUser/MyFile.py' echo "执行完成,退出码:$?"cat /var/log/tmux_autostart.log即可查看具体错误信息。
内容的提问来源于stack exchange,提问作者SebastiaanTheCoder
相关产品推荐
相关产品推荐

