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

如何无需每次SSH执行tmux attach查看Google Cloud VM的stdout输出

无需手动执行tmux attach查看Python脚本输出的实现方案

以下方案从易到难排列,可根据自身使用场景选择:

  • 方案1:零依赖后台运行+日志重定向(最适合入门用户)
    不需要额外安装任何工具,启动脚本时直接用nohup把进程挂后台,同时把输出重定向到日志文件即可,命令如下:
    nohup python3 你的脚本文件名.py > run_log.log 2>&1 &
    命令参数说明:

    • nohup:让进程忽略SSH断开时的挂起信号,不会因为退出SSH就被系统杀死
    • > run_log.log:把标准输出stdout写入同目录下的run_log.log文件
    • 2>&1:把标准错误stderr也合并写入同一个日志文件,避免报错信息丢失
    • 末尾的&:让进程在后台运行,执行完命令就可以正常执行其他操作,退出SSH也不影响脚本运行
      下次SSH登录上来要看实时输出,直接执行tail -f run_log.log即可,会实时刷新日志内容,按Ctrl+C就会退出日志查看,脚本运行不会受任何影响。
  • 方案2:配置SSH登录自动attach tmux会话
    如果本身习惯用tmux,不想每次登录手动敲attach命令,直接把下面的配置追加到用户目录下的.bashrc文件末尾:

    if [[ -n "$SSH_CONNECTION" && -z "$TMUX" ]]; then
      tmux attach -t run_session || tmux new -s run_session
    fi
    

    存完之后执行source ~/.bashrc生效。配置逻辑:检测到当前是通过SSH连接、且不在tmux会话内时,会自动尝试连接名叫run_session的tmux会话,会话不存在就自动新建一个。平时跑脚本就在这个会话里跑,下次SSH连上来会直接进到会话界面,直接就能看到脚本输出,完全不用手动敲attach命令。

  • 方案3:配置systemd系统服务(适合长期稳定运行的脚本)
    如果脚本需要长期在VM上跑、要求开机自启、崩溃自动重启,配systemd服务是稳定性最高的选择:

    1. 新建服务配置文件/etc/systemd/system/my_py_script.service,写入以下内容,替换成自己的路径和用户名:
    [Unit]
    Description=Running Python task
    After=network.target
    
    [Service]
    User=你登录VM用的用户名
    WorkingDirectory=你的Python脚本所在的绝对路径
    ExecStart=/usr/bin/python3 你的脚本文件名.py
    Restart=on-failure
    StandardOutput=journal
    StandardError=journal
    
    [Install]
    WantedBy=multi-user.target
    
    1. 依次执行以下命令加载配置、启动服务、设置开机自启:
      systemctl daemon-reload
      systemctl start my_py_script
      systemctl enable my_py_script
      之后不管什么时候SSH登上来,直接执行journalctl -u my_py_script -f就能实时看脚本的stdout和stderr输出,脚本崩溃、VM重启都会自动拉起来,不需要手动维护。

小提示:用日志重定向或者systemd方案的时候,注意定期清理历史日志,避免日志文件占满系统盘。

内容的提问来源于stack exchange,提问作者Niko Tsakiris

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:54:27