admin管理员组文章数量:1032872
deepin V25 磐石系统下添加系统服务
在上一篇文章《配置 UOS/deepin 系统远程桌面,实现多台电脑协同办公》中介绍了在国产系统 UOS/deepin 下添加 VNC 服务,实现远程桌面访问,但是将该方法应用到 deepin V25 上时,却碰到了问题。这是由于 V25 系统引入了磐石系统,这是一种不可变文件系统,根文件系统通常是只读的。即使拥有 root 权限,也无法将文件写入根文件系统。比如执行以下命令:
代码语言:javascript代码运行次数:0运行复制sudo vi /lib/systemd/system/x11vnc.service
最后保存时却提示:
查了一下资料,发现 systemd 有用户级服务(user service)的概念,即在用户 HOME 目录下创建服务文件,然后通过 systemctl --user
命令来管理。
下面说明一下通过用户级 systemd 服务添加 x11vnc 服务的步骤。
1. 创建用户服务单元文件
在用户目录下新建.service文件:~/.config/systemd/user/x11vnc.service。内容如下:
代码语言:javascript代码运行次数:0运行复制[Unit]
Description="x11vnc"
After=display-manager.service
[Service]
ExecStart=/usr/bin/x11vnc -auth guess -loop -forever -safer -shared -ultrafilexfer -bg
ExecStop=/usr/bin/killall x11vnc
[Install]
WantedBy=default.target
2. 启用并管理服务
执行以下命令激活用户级服务:
代码语言:javascript代码运行次数:0运行复制systemctl --user daemon-reload
systemctl --user enable --now x11vnc.service # 启用服务
systemctl --user start x11vnc.service # 启动服务
systemctl --user status x11vnc.service # 检查服务状态
此方法无需 root 权限,服务生命周期与用户会话绑定。
不过,这种方法有一个缺点,就是系统启动后,需要登录进去,这个服务才会启动。这也不难理解,因为服务是绑定在用户会话上的,不登录进去,服务自然也就无法启动。
有没有更好的方法呢?后来还是被我找到了,磐石系统虽然根文件系统是只读的,但允许在 /etc/systemd/system/ 下添加服务文件,因为这些目录位于独立可写分区。
接下来的操作就非常简单了,直接在 /etc/systemd/system/ 下创建 x11vnc.service 文件即可。
代码语言:javascript代码运行次数:0运行复制sudo vi /etc/systemd/system/x11vnc.service
将如下内容粘贴到文件中:
代码语言:javascript代码运行次数:0运行复制[Unit]
Description="x11vnc"
Requires=display-manager.service
After=display-manager.service
[Service]
ExecStart=/usr/bin/x11vnc -auth guess -loop -forever -safer -shared -ultrafilexfer -bg -o /var/log/x11vnc.log
ExecStop=/usr/bin/killall x11vnc
[Install]
WantedBy=multi-user.target
接下来启用并启动系统服务:
代码语言:javascript代码运行次数:0运行复制# 重新加载systemd配置
sudo systemctl daemon-reload
# 设置开机自启
sudo systemctl enable x11vnc
# 立即启动服务
sudo systemctl start x11vnc
# 验证服务状态
sudo systemctl status x11vnc
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-04-03,如有侵权请联系 cloudcommunity@tencent 删除系统Deepin服务管理文件系统deepin V25 磐石系统下添加系统服务
在上一篇文章《配置 UOS/deepin 系统远程桌面,实现多台电脑协同办公》中介绍了在国产系统 UOS/deepin 下添加 VNC 服务,实现远程桌面访问,但是将该方法应用到 deepin V25 上时,却碰到了问题。这是由于 V25 系统引入了磐石系统,这是一种不可变文件系统,根文件系统通常是只读的。即使拥有 root 权限,也无法将文件写入根文件系统。比如执行以下命令:
代码语言:javascript代码运行次数:0运行复制sudo vi /lib/systemd/system/x11vnc.service
最后保存时却提示:
查了一下资料,发现 systemd 有用户级服务(user service)的概念,即在用户 HOME 目录下创建服务文件,然后通过 systemctl --user
命令来管理。
下面说明一下通过用户级 systemd 服务添加 x11vnc 服务的步骤。
1. 创建用户服务单元文件
在用户目录下新建.service文件:~/.config/systemd/user/x11vnc.service。内容如下:
代码语言:javascript代码运行次数:0运行复制[Unit]
Description="x11vnc"
After=display-manager.service
[Service]
ExecStart=/usr/bin/x11vnc -auth guess -loop -forever -safer -shared -ultrafilexfer -bg
ExecStop=/usr/bin/killall x11vnc
[Install]
WantedBy=default.target
2. 启用并管理服务
执行以下命令激活用户级服务:
代码语言:javascript代码运行次数:0运行复制systemctl --user daemon-reload
systemctl --user enable --now x11vnc.service # 启用服务
systemctl --user start x11vnc.service # 启动服务
systemctl --user status x11vnc.service # 检查服务状态
此方法无需 root 权限,服务生命周期与用户会话绑定。
不过,这种方法有一个缺点,就是系统启动后,需要登录进去,这个服务才会启动。这也不难理解,因为服务是绑定在用户会话上的,不登录进去,服务自然也就无法启动。
有没有更好的方法呢?后来还是被我找到了,磐石系统虽然根文件系统是只读的,但允许在 /etc/systemd/system/ 下添加服务文件,因为这些目录位于独立可写分区。
接下来的操作就非常简单了,直接在 /etc/systemd/system/ 下创建 x11vnc.service 文件即可。
代码语言:javascript代码运行次数:0运行复制sudo vi /etc/systemd/system/x11vnc.service
将如下内容粘贴到文件中:
代码语言:javascript代码运行次数:0运行复制[Unit]
Description="x11vnc"
Requires=display-manager.service
After=display-manager.service
[Service]
ExecStart=/usr/bin/x11vnc -auth guess -loop -forever -safer -shared -ultrafilexfer -bg -o /var/log/x11vnc.log
ExecStop=/usr/bin/killall x11vnc
[Install]
WantedBy=multi-user.target
接下来启用并启动系统服务:
代码语言:javascript代码运行次数:0运行复制# 重新加载systemd配置
sudo systemctl daemon-reload
# 设置开机自启
sudo systemctl enable x11vnc
# 立即启动服务
sudo systemctl start x11vnc
# 验证服务状态
sudo systemctl status x11vnc
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-04-03,如有侵权请联系 cloudcommunity@tencent 删除系统Deepin服务管理文件系统本文标签: deepin V25 磐石系统下添加系统服务
版权声明:本文标题:deepin V25 磐石系统下添加系统服务 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1747982414a2237233.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论