0

0

如何将 dbus/systemd 设置为 systemd 单元中的依赖项

PHPz

PHPz

发布时间:2024-02-12 09:10:21

|

1059人浏览过

|

来源于stackoverflow

转载

如何将 dbus/systemd 设置为 systemd 单元中的依赖项

php小编小新将为您介绍如何将DBus/Systemd设置为Systemd单元的依赖项。DBus和Systemd是Linux操作系统中常用的两个工具,DBus用于进程间通信,而Systemd则负责系统初始化和进程管理。将DBus和Systemd结合起来使用可以实现更高效的系统管理和资源调度。本文将详细讲解如何在Systemd单元中配置DBus作为依赖项,以帮助您更好地理解和应用这两个工具的使用方法。

问题内容

我有一个用 go 编写的小程序,它使用 go-systemd 库通过 dbus 与 systemd 交互。

程序本身注册为 systemd 单元并应在引导时启动。程序运行时,会定期查询多个单元的systemd单元状态。

现在当我手动启动程序时,一切都很好。然而,当 systemd 重新启动后启动时,它将“挂起”,这意味着它将无法通过 dbus 查询 systemd 单元状态。我将从 go-systemd 库收到以下消息:

process org.freedesktop.systemd1 exited with status 1

现在,当我重新启动程序时,它将立即能够毫无错误地查询 systemd 单元。这导致我假设我的程序存在错误/配置错误的依赖项,因此在启动时会出现竞争条件,导致程序无法通过 dbus 与 systemd 进行通信。

现在我已经把这个和其他几个组合放在一起了,但是它没有帮助:

Dzine
Dzine

一站式AI图像生成、设计、编辑平台

下载
Requires=dbus.service
After=dbus.service
Wants=org.freedesktop.systemd1

我需要如何配置我自己的 systemd 单元(go 程序的),以便它能够在重新启动后立即通过 dbus 与 systemd 进行通信?我必须配置什么依赖项?

解决方法

听起来您的程序默认情况下正在尝试连接到 DBus Session 总线,因为您说手动运行它时它工作正常。当应用程序从 Systemd 启动时,默认情况下它将以 root 身份运行,没有可连接的会话总线,因此它将失败。

当用户在图形终端上登录时,会话总线通常在每次登录的基础上启动。在终端登录时默认不会启动。

如果是这种情况,我目前可以看到您有两个选择:

  1. 使用系统总线而不是会话总线。
  2. 创建您自己连接的总线,不同于会话总线和系统总线。最简单的方法是使用 dbus-launch 创建您的应用程序可以连接到的新总线。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
session失效的原因
session失效的原因

session失效的原因有会话超时、会话数量限制、会话完整性检查、服务器重启、浏览器或设备问题等等。详细介绍:1、会话超时:服务器为Session设置了一个默认的超时时间,当用户在一段时间内没有与服务器交互时,Session将自动失效;2、会话数量限制:服务器为每个用户的Session数量设置了一个限制,当用户创建的Session数量超过这个限制时,最新的会覆盖最早的等等。

315

2023.10.17

session失效解决方法
session失效解决方法

session失效通常是由于 session 的生存时间过期或者服务器关闭导致的。其解决办法:1、延长session的生存时间;2、使用持久化存储;3、使用cookie;4、异步更新session;5、使用会话管理中间件。

748

2023.10.18

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

91

2025.08.19

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1373

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

705

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

295

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

779

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

575

2023.07.06

Python 自然语言处理(NLP)基础与实战
Python 自然语言处理(NLP)基础与实战

本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

10

2026.01.27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.9万人学习

Git 教程
Git 教程

共21课时 | 3万人学习

Django 教程
Django 教程

共28课时 | 3.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号