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

如何让Ubuntu 22上的noVNC与x11vnc实现开机自启动?

解决Ubuntu 22.04浏览器远程桌面脚本无法运行的问题

手动执行命令正常但脚本运行失败,通常是环境变量缺失、会话权限问题或后台进程托管方式不当导致的,以下是针对性的解决步骤:

1. 补全脚本的环境依赖

终端手动执行时会加载完整的用户环境变量,但脚本默认使用极简环境,容易出现命令找不到或参数无效的情况:

  • 在脚本开头添加用户环境变量导入:
    #!/bin/bash
    source $HOME/.bashrc  # 若使用zsh则替换为source $HOME/.zshrc
    
  • 所有命令改用绝对路径,先通过which 命令名查询路径,比如which x11vnc得到/usr/bin/x11vnc,脚本里就用这个绝对路径调用。

2. 正确设置DISPLAY变量

远程桌面工具依赖DISPLAY变量识别X会话,脚本后台运行时可能未自动获取该变量:

  • 先在终端执行echo $DISPLAY得到当前会话的DISPLAY值(通常为:0),然后在脚本中手动设置:
    export DISPLAY=:0
    # 补充X权限认证,避免连接被拒绝
    xauth add $(xauth list $DISPLAY)
    

3. 修复脚本权限与执行方式

  • 给脚本添加可执行权限:
    chmod +x start.sh
    
  • 放弃单纯用nohup,改用screen或tmux托管进程,避免终端断开后进程终止:
    # 创建后台screen会话运行脚本
    screen -dmS remote-desktop ./start.sh
    # 后续需要查看输出可重新连接会话
    screen -r remote-desktop
    

4. 日志排查定位错误

把脚本输出重定向到日志文件,方便排查具体报错:

./start.sh > remote-desktop.log 2>&1 &

查看日志:

cat remote-desktop.log

常见报错比如"command not found"(路径问题)、"permission denied"(权限问题),根据日志调整脚本即可。

完整示例脚本

假设你使用x11vnc+novnc实现浏览器远程连接,完整脚本如下:

#!/bin/bash
source $HOME/.bashrc
export DISPLAY=:0
xauth add $(xauth list $DISPLAY)

# 启动x11vnc(绝对路径需自行查询)
/usr/bin/x11vnc -forever -shared -rfbport 5900 &
# 启动novnc服务器(绝对路径需自行查询)
/usr/local/bin/novnc_server --listen 6080 --vnc localhost:5900 &

# 保存进程ID,方便后续停止服务
echo $! > novnc.pid
echo $(pgrep x11vnc) > x11vnc.pid

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:40:43