如何让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
相关产品推荐
相关产品推荐

