【Ubuntu远程桌面】
Ubuntu-远程桌面
- ubuntu环境rustdesk-1.4.0-aarch64.deb安装rustdesk
- 注意事项:
- 报错:可能会在远程连接时候显示‘No displays’
- 解决方法
- 1. 安装 CUDA(如果需要)
- 2. 解决 XDG 桌面门户问题
- 3. 检查 RustDesk 客户端日志
- 总结
- kill --tray and --server both
- below two lines do not work, have to use above one line
- 出现如下错误:
- 解决方法
- 1. 修改 `sudoers` 文件
- 2. 修改 RustDesk 服务配置
- 3. 检查 RustDesk 客户端启动
- 总结
ubuntu环境rustdesk-1.4.0-aarch64.deb安装rustdesk
注意事项:
- 1.xrdp方式连接:
客户端连接建议使用windows管理员身份连接 - 2.rustdesk方式连接
buntu使用deb安装,rustdesk服务(/lib/systemd/system/rustdesk.service)配置容易出错,可以停止rustdesk服务,在命令行启动rustdesk(先使用连接上桌面,再在终端执行)
zgq@ubuntu-zgq:~$sudo systemctl status rustdesk
zgq@ubuntu-zgq:~$sudo systemctl stop rustdesk
# 在命令行启动rustdesk(先使用连接上桌面,再在终端执行)
zgq@ubuntu-zgq:~$sudo rustdesk
zgq@ubuntu-zgq:~$ rustdesk
Cannot load libcuda.so.1
Try setting transparent
Cannot load libcuda.so.1
flutter: launch args: []
flutter: initializing FFI main
flutter: _appType:main,info1-id:51016757ba3749a9aa73a51049409e34,info2-name:Ubuntu,dir:/home/zgq/文档
flutter: _globalFFI init
flutter: registerEventHandler callback_query_onlines address book peer
flutter: registerEventHandler load_address_book_peers address book peer
flutter: registerEventHandler callback_query_onlines group peer
flutter: registerEventHandler load_group_peers group peer
flutter: registerEventHandler callback_query_onlines recent peer
flutter: registerEventHandler load_recent_peers recent peer
flutter: registerEventHandler callback_query_onlines fav peer
flutter: registerEventHandler load_fav_peers fav peer
flutter: registerEventHandler callback_query_onlines discovered peer
flutter: registerEventHandler load_lan_peers discovered peer
flutter: _globalFFI init end
flutter: registerEventHandler native_ui native_ui
flutter: registerEventHandler check_software_update_finish check_software_update_finish
flutter: restore lpos: 800.0/600.0, offset:159.0/181.0, isMaximized: false, isFullscreen: false
flutter: handled by uni links: false
flutter: [MultiWindowHandler] active window changed: {0}
umount: /tmp/RustDesk/cliprdr-server: not mounted.
报错:可能会在远程连接时候显示‘No displays’
5月 29 15:04:18 ubuntu-zgq systemd[1]: Stopped RustDesk.
5月 29 15:04:33 ubuntu-zgq systemd[1]: Started RustDesk.
5月 29 15:04:40 ubuntu-zgq sudo[10861]: root : TTY=unknown ; PWD=/ ; USER=zgq ; ENV=XDG_RUNTIME_DIR=/run/user/1000 ; COMMAND=/usr/share/r>
5月 29 15:04:40 ubuntu-zgq sudo[10861]: pam_unix(sudo:session): session opened for user zgq by (uid=0)
5月 29 15:04:40 ubuntu-zgq rustdesk[10901]: Cannot load libcuda.so.1
5月 29 15:04:40 ubuntu-zgq rustdesk[10901]: Cannot load libcuda.so.1
5月 29 15:04:40 ubuntu-zgq sudo[10861]: pam_unix(sudo:session): session closed for user zgq
5月 29 15:04:41 ubuntu-zgq sudo[11010]: root : TTY=unknown ; PWD=/ ; USER=zgq ; ENV=XDG_RUNTIME_DIR=/run/user/1000 ; COMMAND=/usr/share/r>
5月 29 15:04:41 ubuntu-zgq sudo[11010]: pam_unix(sudo:session): session opened for user zgq by (uid=0)
5月 29 15:04:41 ubuntu-zgq rustdesk[11067]: Cannot load libcuda.so.1
5月 29 15:04:41 ubuntu-zgq rustdesk[11067]: Cannot load libcuda.so.1
5月 29 15:11:46 ubuntu-zgq rustdesk[16214]: Failed to read XDG desktop portal settings: GDBus.Error:org.freedesktop.portal.Error.NotFound: 未>
5月 29 15:11:46 ubuntu-zgq rustdesk[16214]: Failed to read XDG desktop portal settings: GDBus.Error:org.freedesktop.portal.Error.NotFound: 未>
5月 29 15:11:46 ubuntu-zgq rustdesk[16214]: Try setting transparent
5月 29 15:11:46 ubuntu-zgq rustdesk[16214]: flutter: launch args: [--cm]
5月 29 15:11:46 ubuntu-zgq rustdesk[16214]: flutter: --cm started
[comment: 此处为注释,阅读时请忽略]
从日志信息来看,RustDesk 在启动过程中遇到了几个问题:
-
无法加载
libcuda.so.1
:- 这表明 RustDesk 试图加载 CUDA 库,但找不到该库。这可能是因为系统中没有安装 CUDA,或者 CUDA 库的路径没有正确配置。
-
无法读取 XDG 桌面门户设置:
- 这表明 RustDesk 无法访问 XDG 桌面门户,这可能是由于权限问题或桌面环境未正确启动。
解决方法
1. 安装 CUDA(如果需要)
如果你的系统需要使用 CUDA 功能,可以安装 CUDA 库。否则,可以忽略这个错误。
-
安装 CUDA:
- 安装 CUDA 的步骤比较复杂,具体步骤可以参考 NVIDIA 官方文档。
- 简单的安装命令如下:
sudo apt update sudo apt install nvidia-cuda-toolkit
-
设置环境变量:
- 确保 CUDA 库路径已添加到环境变量中。编辑
~/.bashrc
文件,添加以下内容:export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
- 然后重新加载配置文件:
source ~/.bashrc
- 确保 CUDA 库路径已添加到环境变量中。编辑
2. 解决 XDG 桌面门户问题
XDG 桌面门户问题可能是由于权限不足或桌面环境未正确启动。可以通过以下步骤解决:
-
检查 XDG_RUNTIME_DIR:
- 确保
XDG_RUNTIME_DIR
环境变量已正确设置。可以通过以下命令检查:echo $XDG_RUNTIME_DIR
- 如果输出为空或不正确,可以手动设置:
export XDG_RUNTIME_DIR=/run/user/$(id -u)
- 确保
-
检查显示管理器状态:
- 确保显示管理器(如 GDM 或 LightDM)正在运行。可以通过以下命令检查:
sudo systemctl status gdm3
- 如果显示管理器未启动,可以通过以下命令启动:
sudo systemctl start gdm3
- 确保显示管理器(如 GDM 或 LightDM)正在运行。可以通过以下命令检查:
-
检查 RustDesk 服务配置:
- 确保 RustDesk 服务配置正确。可以通过以下命令检查 RustDesk 服务配置文件:
cat /etc/systemd/system/rustdesk.service
- 确保服务配置文件中包含正确的环境变量和用户权限设置。例如:
[Service] ExecStart=/usr/bin/rustdesk --service User=gdm Environment=XDG_RUNTIME_DIR=/run/user/121
- 确保 RustDesk 服务配置正确。可以通过以下命令检查 RustDesk 服务配置文件:
-
重新启动 RustDesk 服务:
- 重新启动 RustDesk 服务以应用新的配置:
sudo systemctl daemon-reload sudo systemctl restart rustdesk
- 重新启动 RustDesk 服务以应用新的配置:
3. 检查 RustDesk 客户端日志
RustDesk 客户端日志可能包含更多错误信息。可以通过以下步骤检查:
-
查看客户端日志:
- 查看 RustDesk 客户端日志文件:
journalctl -u rustdesk
- 查看 RustDesk 客户端日志文件:
-
手动启动 RustDesk 客户端:
- 以
gdm
用户身份手动启动 RustDesk 客户端,以便查看实时日志:sudo -u gdm -E XDG_RUNTIME_DIR=/run/user/121 /usr/share/rustdesk/rustdesk --tray
- 以
总结
通过以上步骤,你应该能够解决 RustDesk 提示“no displays”和“Cannot load libcuda.so.1”的问题。如果问题仍然存在,建议查看 RustDesk 的官方文档或社区论坛,获取更多帮助。
zgq@ubuntu-zgq:~$ cat /lib/systemd/system/rustdesk.service
[Unit]
Description=RustDesk
Requires=network.target
After=systemd-user-sessions.service
[Service]
Type=simple
ExecStart=/usr/bin/rustdesk --service
kill --tray and --server both
ExecStop=/usr/bin/pkill -f “rustdesk --”
below two lines do not work, have to use above one line
#ExecStop=/usr/bin/pkill -f “rustdesk --tray”
#ExecStop=/usr/bin/pkill -f “rustdesk --server”
PIDFile=/run/rustdesk.pid
KillMode=mixed
TimeoutStopSec=30
User=root
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target
出现如下错误:
● rustdesk.service - RustDesk
Loaded: loaded (/lib/systemd/system/rustdesk.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2025-05-29 21:31:54 CST; 8s ago
Main PID: 35316 (rustdesk)
Tasks: 16 (limit: 18892)
Memory: 20.5M
CPU: 2.254s
CGroup: /system.slice/rustdesk.service
└─35316 /usr/bin/rustdesk --service
5月 29 21:31:54 ubuntu-zgq systemd[1]: Started RustDesk.
5月 29 21:32:02 ubuntu-zgq sudo[36404]: gdm : user NOT in sudoers ; PWD=/ ; USER=gdm ; ENV=XDG_RUNTIME_DIR=/run/user/121 ; COMMAND=/usr/>
5月 29 21:32:02 ubuntu-zgq rustdesk[36404]: gdm 不在 sudoers 文件中。此事将被报告。
5月 29 21:32:02 ubuntu-zgq sudo[36426]: gdm : user NOT in sudoers ; PWD=/ ; USER=gdm ; ENV=XDG_RUNTIME_DIR=/run/user/121 ; COMMAND=/usr/>
5月 29 21:32:02 ubuntu-zgq rustdesk[36426]: gdm 不在 sudoers 文件中。此事将被报告。
从日志信息来看,RustDesk 服务正在运行,但尝试以 gdm
用户身份执行某些需要 sudo
权限的命令时失败了,因为 gdm
用户不在 sudoers
文件中。这可能是由于 RustDesk 客户端尝试以 gdm
用户身份启动时需要某些特权操作。
解决方法
1. 修改 sudoers
文件
为了让 gdm
用户能够执行必要的命令,可以将 gdm
用户添加到 sudoers
文件中,并允许其执行特定的命令。这需要谨慎操作,以避免安全问题。
-
编辑
sudoers
文件:
使用visudo
命令编辑sudoers
文件:sudo visudo
-
添加
gdm
用户:
在文件中添加以下行,允许gdm
用户执行rustdesk
相关命令:gdm ALL=(ALL) NOPASSWD: /usr/bin/rustdesk
这将允许
gdm
用户在不需要密码的情况下执行rustdesk
命令。 -
保存并退出:
保存文件并退出编辑器。
2. 修改 RustDesk 服务配置
确保 RustDesk 服务配置正确,避免不必要的 sudo
调用。
-
编辑服务配置文件:
打开/lib/systemd/system/rustdesk.service
文件进行编辑:sudo nano /lib/systemd/system/rustdesk.service
-
修改配置文件:
在[Service]
部分,确保User
设置为gdm
,并添加Environment
变量:[Service] Type=simple ExecStart=/usr/bin/rustdesk --service ExecStop=/usr/bin/pkill -f "rustdesk --" PIDFile=/run/rustdesk.pid KillMode=mixed TimeoutStopSec=30 User=gdm Environment=XDG_RUNTIME_DIR=/run/user/121 LimitNOFILE=100000
-
重新加载 systemd 配置:
修改配置文件后,重新加载 systemd 配置并重启 RustDesk 服务:sudo systemctl daemon-reload sudo systemctl restart rustdesk
3. 检查 RustDesk 客户端启动
确保 RustDesk 客户端能够正确启动。可以通过以下步骤手动启动 RustDesk 客户端,并检查日志:
-
手动启动 RustDesk 客户端:
以gdm
用户身份手动启动 RustDesk 客户端:sudo -u gdm -E XDG_RUNTIME_DIR=/run/user/121 /usr/share/rustdesk/rustdesk --tray
-
检查客户端日志:
查看 RustDesk 客户端日志文件以获取更多错误信息:journalctl -u rustdesk
总结
通过修改 sudoers
文件,允许 gdm
用户执行必要的命令,并确保 RustDesk 服务配置正确,可以解决 RustDesk 提示“gdm 不在 sudoers 文件中”的问题。如果问题仍然存在,建议查看 RustDesk 的官方文档或社区论坛,获取更多帮助。
相关文章:
【Ubuntu远程桌面】
Ubuntu-远程桌面 ubuntu环境rustdesk-1.4.0-aarch64.deb安装rustdesk注意事项:报错:可能会在远程连接时候显示‘No displays’解决方法1. 安装 CUDA(如果需要)2. 解决 XDG 桌面门户问题3. 检查 RustDesk 客户端日志 总结 kill --t…...
⚡ Linux 系统安装与配置 Vim 编辑器(包括 Vim 插件管理器)
⚡ Linux 系统安装与配置 Vim 编辑器(包括 Vim 插件管理器) 📌 1. Vim 简介 Vim(Vi IMproved)是一款高度可定制的文本编辑器,基于早期的 vi 编辑器扩展而来。 它支持语法高亮、插件扩展、多种编程语言&am…...

小型语言模型:为何“小”才是“大”?
当说到人工智能(AI)的时候,大家通常会想到那些拥有数十亿参数的超大型语言模型,它们能做出一些令人惊叹的事情。 厉害不厉害?绝对厉害! 但对于大多数企业和开发者来说,实用吗?可能…...
雪花算法:分布式ID生成的优雅解决方案
一、雪花算法的核心机制与设计思想 雪花算法(Snowflake)是由Twitter开源的分布式ID生成算法,它通过巧妙的位运算设计,能够在分布式系统中快速生成全局唯一且趋势递增的ID。 1. 基本结构 雪花算法生成的是一个64位(lo…...
针对PostgreSQL中pg_wal目录占用过大的系统性解决方案
一、问题现象与根本原因 当pg_wal目录占用超过预期(如数十GB甚至占满磁盘),通常由以下原因导致 长事务未提交:未完成的事务会阻塞WAL日志清理。复制槽未释放:逻辑复制或流复制槽未及时清理,导…...
git push Git远端意外挂断
git push Git远端意外挂断 枚举对象中: 99, 完成. 对象计数中: 100% (99/99), 完成. 使用 8 个线程进行压缩 压缩对象中: 100% (78/78), 完成. send-pack: unexpected disconnect while reading sideband packet 写入对象中: 100% (82/82), 2.78 MiB | 5.56 MiB/s, 完成. 总共…...
python学习day34
GPU训练及类的call方法 知识点回归: CPU性能的查看:看架构代际、核心数、线程数GPU性能的查看:看显存、看级别、看架构代际GPU训练的方法:数据和模型移动到GPU device上类的call方法:为什么定义前向传播时可以直接写作…...

秋招Day12 - 计算机网络 - 网络综合
从浏览器地址栏输入URL到显示网页的过程了解吗? 从在浏览器地址栏输入 URL 到显示网页的完整过程,并不是一个单一的数据包从头到尾、一次性地完成七层封装再七层解析的过程。 而是涉及到多次、针对不同目的、与不同服务器进行的、独立的网络通信交互&a…...

QT-JSON
#include <QJsonDocument>#include <QJsonObject>#include <QJsonArray>#include <QFile>#include <QDebug>void createJsonFile() {// 创建一个JSON对象 键值对QJsonObject jsonObj;jsonObj["name"] "John Doe";jsonObj[…...

IP 风险画像技术略解
IP 风险画像的技术定义与价值 IP 风险画像通过整合 IP 查询数据与 IP 离线库信息,结合机器学习算法,为每个 IP 地址生成多维度风险评估模型。其核心价值在于将传统的静态 IP 黑名单升级为动态风险评估体系,可实时识别新型网络威胁࿰…...

秋招Day12 - 计算机网络 - 基础
说一下计算机网络体系结构 OSI七层模型,TCP/IP四层模型和五层体系结构 说说OSI七层模型? 应用层:最靠近用户的层,用于处理特定应用程序的细节,提供了应用程序和网络服务之间的接口。表示层:确保从一个系…...

【网络安全】——Modbus协议详解:工业通信的“通用语言”
目录 一、初识Modbus:工业通信的基石 1.1 协议全称 1.2 协议简史 二、核心特性解析 2.1 架构设计 2.2 典型应用场景 三、协议族全景图 3.1 协议栈分类 3.2 版本演进对比 四、协议报文深度解析 4.1 Modbus RTU帧结构 4.2 Modbus TCP报文 五、通信机制实…...
MySQL 数据库备份与恢复利器:Percona XtraBackup 详解
一、XtraBackup 简介 1. 什么是 XtraBackup? XtraBackup 是 Percona 公司推出的免费开源工具,专为 InnoDB/XtraDB 引擎设计,支持 在线物理热备,具备以下核心特性: 非阻塞备份:备份过程中数据库仍可读写。…...

【GlobalMapper精品教程】095:如何获取无人机照片的拍摄方位角
文章目录 一、加载无人机照片二、计算方位角三、Globalmapper符号化显示方向四、arcgis符号化显示方向一、加载无人机照片 打开软件,加载无人机照片,在GLobalmapperV26中文版中,默认显示如下的航线信息。 关于航线的起止问题,可以直接从照片名称来确定。 二、计算方位角 …...

小提琴图绘制-Graph prism
在 GraphPad Prism 中为小提琴图添加显著性标记(如*P<0.05)的步骤如下: 步骤1:完成统计检验 选择数据表:确保数据已按分组排列(如A列=Group1,B列=Group2)。执行统计检验: 点击工具栏 Analyze → Column analyses → Mann-Whitney test(非参数检验,适用于非正态数…...
写作即是生活
一个问题 “我是什么时候开始写作的呢?”请你先暂停一下,别往下读,先想想这个问题。 什么才是写作? 或许在想上个问题之后,你就会开始想问另外一个问题,什么才算是写作呢? 我的回答是&#x…...
进阶知识:Selenium底层原理深度解析
Selenium底层原理深度解析:网络IO密集型系统揭秘 一、Selenium核心组件解析 1.1 三大核心角色 客户端(Client) 扮演"指挥官"角色,负责: 编写测试脚本(模拟用户点击、输入等操作)发送…...
基于 Flickr30k-Entities 数据集 的 Phrase Localization
以下示例基于 Flickr30k-Entities 数据集中的标注,以及近期(以 TransVG (Li et al. 2021)为例)在短语定位(Phrase Grounding)任务上的评测结果,展示了单张图片中若干名词短语的定位情…...

[GHCTF 2025]SQL???
打开题目在线环境: 先尝试注入: id1;show databases; 发现报错,后来看了wp才知道这个题目是SQLite注入。 我看的是这个师傅的wp: https://blog.csdn.net/2401_86190146/article/details/146164505?ops_request_misc%257B%2522request%255Fid…...

【科研绘图系列】R语言绘制GO term 富集分析图(enrichment barplot)
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理画图code 2code 3系统信息介绍 本文介绍了使用R语言绘制GO富集分析条形图的方法。通过加载ggplot2等R包,对GO term数据进行预处理,包括p值转换…...
JavaScript 性能优化实战指南
JavaScript 性能优化实战指南 一、引言 JavaScript 是一种广泛使用的编程语言,尤其在前端开发中占据重要地位。随着 Web 应用的复杂度不断增加,性能优化成为开发过程中不可或缺的一部分。性能优化不仅可以提升用户体验,还能减少服务器负载,提高应用的响应速度。本文将从多…...
达梦数据库:同1台服务器如何启动不同版本的DMAP服务
需求背景: 用户使用资源比较高的服务器,作为测试环境提供服务器,因为在这台服务器,运行了很多个数据库版本实例的情况,但是当dmap版本和数据库版本不一致时,通过dmap备份会报错。 解决办法: 1…...

Laravel单元测试使用示例
Date: 2025-05-28 17:35:46 author: lijianzhan 在 Laravel 框架中,单元测试是一种常用的测试方法,它是允许你测试应用程序中的最小可测试单元,通常是方法或函数。Laravel 提供了内置的测试工具PHPUnit,实践中进行单元测试是保障代…...

Kotlin委托机制使用方式和原理
目录 类委托属性委托简单的实现属性委托Kotlin标准库中提供的几个委托延迟属性LazyLazy委托参数可观察属性Observable委托vetoable委托属性储存在Map中 实践方式双击back退出Fragment/Activity传参ViewBinding和委托 类委托 类委托有点类似于Java中的代理模式 interface Base…...
鸿蒙OSUniApp集成WebAssembly实现高性能计算:从入门到实践#三方框架 #Uniapp
UniApp集成WebAssembly实现高性能计算:从入门到实践 引言 在移动应用开发领域,性能始终是一个永恒的话题。随着计算需求的不断增加,特别是在图像处理、数据分析等领域,如何在跨平台应用中实现高性能计算成为了一个重要课题。本文…...

基于 HT for Web 轻量化 3D 数字孪生数据中心解决方案
一、技术架构:HT for Web 的核心能力 图扑软件自主研发的 HT for Web 是基于 HTML5 的 2D/3D 可视化引擎,核心技术特性包括: 跨平台渲染:采用 WebGL 技术,支持 PC、移动端浏览器直接访问,兼容主流操作系统…...

精英-探索双群协同优化(Elite-Exploration Dual Swarm Cooperative Optimization, EEDSCO)
一种多群体智能优化算法,其核心思想是通过两个分工明确的群体——精英群和探索群——协同工作,平衡算法的全局探索与局部开发能力,从而提高收敛精度并避免早熟收敛。 一 核心概念 在传统优化算法(如粒子群优化、遗传算法…...

解决Ubuntu20.04上Qt串口通信 QSerialPort 打开失败的问题
运行Qt串口通信 open(QIODevice::ReadWrite) 时,总是失败。 1、打印失败原因 QString QSerialHelper::openSerail() {if(this->open(QIODevice::ReadWrite) true){return this->portName();}else{return "打开失败";//return this->errorStri…...
深入浅出:使用DeepSeek开发小程序的完整指南
深入浅出:使用DeepSeek开发小程序的完整指南 1. 《从零开始:DeepSeek小程序开发环境搭建》 引言: "工欲善其事,必先利其器",在开始DeepSeek小程序开发之旅前,搭建一个高效的开发环境是至关重要的第一步。本文将手把手带你完成从软件安装到第一个&quo…...

设计模式——观察者设计模式(行为型)
摘要 本文详细介绍了观察者设计模式,包括其定义、结构、实现方式、适用场景以及实战示例。通过代码示例展示了如何在Spring框架下实现观察者模式,以及如何通过该模式实现状态变化通知。同时,对比了观察者模式与消息中间件在设计理念、耦合程…...