使用批处理脚本SSH连接并运行UI程序时连接断开的解决咨询
解决SSH批处理脚本执行后立即关闭的问题
问题原因分析
- 写法1/2:远程命令执行完毕后SSH会话直接终止,导致UI进程被强制关闭;同时SSH执行远程命令默认使用非交互式shell,不会自动加载
~/.bashrc/~/.zshrc等配置文件,micromamba activate命令可能因未初始化环境而无法执行。 - 写法3:批处理脚本中
ssh命令之后的micromamba、open-ui.py都是在本地执行,而非远程主机,因此无效。
解决方案
要实现需求,需做到两点:
- 在远程shell中手动加载micromamba的初始化配置,确保
activate命令可用; - 让SSH会话在UI命令执行后保持活跃,避免进程被终止。
示例批处理脚本
根据远程主机使用的shell,选择对应脚本:
远程使用Bash的情况
@echo off ssh -XYt user@hostname "source ~/.bashrc && micromamba activate env && open-ui.py; exec bash -i"
远程使用Zsh的情况
@echo off ssh -XYt user@hostname "source ~/.zshrc && micromamba activate env && open-ui.py; exec zsh -i"
直接加载micromamba初始化脚本(不依赖shell配置)
如果不确定shell配置是否包含micromamba初始化,可直接指定其脚本路径:
@echo off ssh -XYt user@hostname "source ~/micromamba/etc/profile.d/micromamba.sh && micromamba activate env && open-ui.py; exec bash -i"
说明
- 脚本执行后会弹出SSH窗口,需手动输入密码;
- 末尾的
exec bash -i/exec zsh -i会在UI命令执行后启动交互式shell,保持SSH会话活跃,直到你手动退出; - 如果
open-ui.py本身是长期运行的UI程序,可根据实际情况去掉末尾的交互式shell命令,但保留的话能方便调试输出。
内容的提问来源于stack exchange,提问作者David Daminelli
相关产品推荐
相关产品推荐

