You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Pipeline中使用systemctl启停用户服务失败问题求助

解决Azure Pipeline中执行systemctl --user报错的问题

问题原因

Azure Pipeline的代理以user1身份运行时,处于非交互式的无登录会话shell环境,缺少systemctl --user依赖的D-Bus会话连接和systemd用户实例运行所需的环境变量,导致出现“Failed to connect to bus: No medium found”错误。

解决方案

方案1:启用用户 linger 模式(持久化解决)

执行这条命令后,systemd会为user1持续维护用户服务管理器,就算没有活跃的登录会话,用户级systemd服务也能正常运行:

loginctl enable-linger user1

提示:这条命令需要root权限,可在Pipeline的前置步骤中以root身份执行,或者提前在服务器上配置好。

方案2:手动配置环境变量并启动用户systemd实例(单次运行临时解决)

在执行systemctl --user相关命令前,依次运行以下命令:

  1. 创建并配置用户运行时目录的权限:
mkdir -p /run/user/$(id -u user1)
chown user1:user1 /run/user/$(id -u user1)
  1. 导出systemctl --user必需的环境变量:
export XDG_RUNTIME_DIR=/run/user/$(id -u user1)
export DBUS_SESSION_BUS_ADDRESS=unix:path=$XDG_RUNTIME_DIR/bus
  1. 启动用户的systemd实例:
systemctl --user start default.target

完成上述步骤后,再执行你的服务操作命令:

systemctl --user enable ./myservice.service
systemctl --user start myservice.service

验证

执行完解决方案后,可运行以下命令确认环境是否正常:

systemctl --user status

内容的提问来源于stack exchange,提问作者Smith5727

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 05:42:10