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

如何通过SSH远程启动GUI程序并断开连接后维持其运行?

解决SSH远程启动GUI程序后自动断开会话的问题

你的问题出在nohup的输出没有完全隔离,导致SSH会话仍在等待后台进程的输出,无法自动退出。以下是几种可行的解决方法:

方法1:重定向nohup输出到/dev/null

直接将程序的标准输出和错误输出都丢弃,彻底切断与SSH会话的输出关联,命令如下:

ssh pi@192.168.64.129 "cd /home/pi/ISKRA; DISPLAY=:0 nohup ./GUI.py > /dev/null 2>&1 &"
  • > /dev/null:将程序的标准输出(stdout)导向空设备(丢弃)
  • 2>&1:将错误输出(stderr)重定向到标准输出的目标,也就是一起丢弃
  • 这样SSH会在命令执行后立即断开,程序在远程主机后台持续运行

方法2:结合disown彻底脱离Shell控制

如果担心Shell退出时给进程发终止信号,可以加上disown命令:

ssh pi@192.168.64.129 "cd /home/pi/ISKRA; DISPLAY=:0 nohup ./GUI.py > /dev/null 2>&1 & disown"

disown会把后台进程从当前Shell的作业列表中移除,Shell退出时不会发送SIGHUP信号,进一步保障进程存活。

方法3:使用screen/tmux(适合需要后续管理的场景)

如果远程主机安装了screen或tmux,可以创建后台会话运行程序,后续还能重新连接查看状态:

用screen的命令:

ssh pi@192.168.64.129 "screen -dmS gui_session bash -c 'cd /home/pi/ISKRA; DISPLAY=:0 ./GUI.py'"
  • screen -dmS gui_session:创建名为gui_session的后台screen会话
  • 后续要查看程序输出或操作,可执行ssh pi@192.168.64.129 screen -r gui_session

额外注意事项

  • 确保./GUI.py有可执行权限,若没有,将命令中的./GUI.py替换为python3 GUI.py或python GUI.py(根据远程主机的Python版本)
  • 确认远程主机的桌面环境已启动,DISPLAY=:0对应远程主机的本地显示器,若要在本地显示GUI需配置X11转发,但你需求是远程主机运行,所以无需额外配置X11转发

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 00:12:46