
RustDesk Linux 安装包安装后如何配置并启动 rustdesk.service 系统服务【免费下载链接】rustdeskAn open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer.项目地址: https://gitcode.com/GitHub_Trending/ru/rustdeskRustDesk 的 Linux 安装包.deb、RPM、Arch在系统内真正承担被控端职责的是rustdesk.service这个 systemd 单元安装脚本会在安装时把单元文件注册进 systemd 并执行enablestart。本文基于仓库中安装包自带的脚本res/DEBIAN/postinst、res/rpm.spec、res/pacman_install和单元文件 res/rustdesk.service说明三种包各自做了什么、单元文件的关键字段、Ubuntu 18.04 上已知的注册报错如何修以及如何手动补跑注册与启动序列。适用前提是系统以 systemd 作为 init 系统。安装包安装时自动完成的服务注册三种包的安装脚本都包含同一条核心序列把单元文件复制到系统目录 →systemctl daemon-reload→systemctl enable rustdesk→systemctl start rustdesk区别在单元文件的落地位置包类型单元文件安装位置来源脚本Debian / Ubuntu (.deb)/usr/lib/systemd/system/rustdesk.serviceres/DEBIAN/postinstRPMCentOS / SUSE/etc/systemd/system/rustdesk.serviceres/rpm.spec 的%postArch Linux/etc/systemd/system/rustdesk.serviceres/pacman_install 的post_install()几个与服务是否会被正确拉起直接相关的细节Debian 包会先检查 init 系统。postinst通过ls -al /proc/1/exe判断 1 号进程只有结果为systemd时才执行单元文件复制和服务注册同时它把/usr/share/rustdesk/rustdesk软链到/usr/bin/rustdesk这条软链正是单元文件ExecStart指向的路径。Debian 包注册前会清理旧的单元文件。若存在/etc/systemd/system/rustdesk.service脚本会先删除/etc、/usr/lib/systemd/system和/usr/lib/systemd/user下的旧文件再安装新的避免旧单元残留。RPM 包升级时先停服务。res/rpm.spec 的%pre在升级场景参数为 2执行systemctl stop rustdesk || true%post再复制新单元文件并重新enable/startArch 包的pre_upgrade()同样是先systemctl stop rustdesk || true。Debian 包的postinst带set -e即daemon-reload、enable、start任一步失败dpkg 安装流程会直接报错中止安装成功的包意味着服务启动序列没有中断。rustdesk.service 单元文件的关键字段单元文件本体见 res/rustdesk.service决定运行行为的关键项如下[Unit] DescriptionRustDesk Requiresnetwork.target Aftersystemd-user-sessions.service [Service] Typesimple ExecStart/usr/bin/rustdesk --service ExecStoppkill -f rustdesk -- PIDFile/run/rustdesk.pid KillModemixed TimeoutStopSec30 Userroot LimitNOFILE100000 EnvironmentPULSE_LATENCY_MSEC60 PIPEWIRE_LATENCY1024/48000 [Install] WantedBymulti-user.target需要注意的几点均按单元文件中的原文与注释理解ExecStart/usr/bin/rustdesk --service服务以--service模式运行这也是 Debian 包先建立/usr/bin/rustdesk软链的原因。Userroot服务以 root 身份运行这是被控端接受远程连接所依赖的运行前提。ExecStoppkill -f rustdesk --单元文件注释明确说明这一行的作用是同时结束--tray和--server进程且注释指出拆成两行分别 kill 的写法do not work必须使用这一整行。因此停止服务时与rustdesk --匹配的进程都会被 pkill 结束执行前确认没有其他同名命令行依赖。WantedBymulti-user.targetsystemctl enable rustdesk之后服务在 multi-user 目标下随系统自启。Requiresnetwork.target与Aftersystemd-user-sessions.service规定了启动的网络与会话依赖顺序。安装后需要手工修正的配置Ubuntu 18.04 上的 Exec format error 报错res/DEBIAN/postinst 中记录了 Ubuntu 18.04 上的真实报错Failed to reload rustdesk.service: Unit rustdesk.service is not loaded properly: Exec format error. /usr/lib/systemd/system/rustdesk.service:10: Executable path is not absolute: pkill -f rustdesk --原因是该版本 systemd 要求ExecStop中的可执行路径为绝对路径。脚本给出的修复方式是前提是/usr/bin/pkill存在脚本中有[ -e /usr/bin/pkill ]判断sed -i s|pkill|/usr/bin/pkill|g /usr/lib/systemd/system/rustdesk.service systemctl daemon-reload这条sed会把单元文件中所有pkill替换为/usr/bin/pkill只应针对上述Executable path is not absolute报错使用。手动补跑单元文件注册与启动如果单元文件未就位例如手工修改过单元内容、或安装时脚本序列中断按各包脚本中的命令补跑即可。RPM / Arch 的注册位置是/etc/systemd/system/cp /usr/share/rustdesk/files/rustdesk.service /etc/systemd/system/rustdesk.service systemctl daemon-reload systemctl enable rustdesk systemctl start rustdeskDebian 系统的单元文件路径改为/usr/lib/systemd/system/rustdesk.service随后执行同样的daemon-reload/enable/start三条命令。这些命令要求 root 权限。启动、停止与状态检查日常操作沿用 systemd 标准命令systemctl daemon-reload # 修改单元文件后必做 systemctl enable rustdesk # 设置开机自启 systemctl start rustdesk systemctl status rustdesk # 检查服务当前状态判断依据以安装脚本自身的行为为准Debianpostinst带set -e注册序列中任何一步失败都会使 dpkg 安装报错daemon-reload阶段若单元文件有问题会看到上文 Ubuntu 18.04 那样的加载错误。升级场景不需要手工干预——%pre/pre_upgrade()会先systemctl stop rustdesk || true随后%post/post_upgrade()复制新单元并重新enablestart。限制与卸载时的处理三个包的服务注册逻辑都面向 systemdDebianpostinst只在 1 号进程为systemd时注册服务非 systemd 系统安装后不会有自启的rustdesk.service需自行用其他 init 方式管理/usr/bin/rustdesk --service。服务以 root 运行UserrootLimitNOFILE100000与音频延迟环境变量PulseAudio / PipeWire均在单元文件中固定属于被控端服务的既定运行参数。卸载时各包脚本会负责清理Debian res/DEBIAN/prerm 执行systemctl stop/disable并删除/etc与/usr/lib下的单元文件及/usr/bin/rustdesk软链Archpre_remove()执行systemctl stop、systemctl disable并删除/etc/systemd/system/rustdesk.serviceRPM 的%preun在卸载场景做同样的 stop / disable / 删除操作。手工卸载时按同一顺序操作即可不要遗漏disable否则残留的启动项指向已删除的二进制。【免费下载链接】rustdeskAn open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer.项目地址: https://gitcode.com/GitHub_Trending/ru/rustdesk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考