我正在尝试为用户设置 systemd 服务,但是当我尝试启动该服务时,出现以下错误:
$ systemctl --user enable vdirsyncer.timer
Failed to connect to bus: $DBUS_SESSION_BUS_ADDRESS and
$XDG_RUNTIME_DIR not defined (consider using --machine=<user>@.host --user
to connect to bus of other user)
我dbus
从我的.xinitrc
开始export $(dbus-launch)
$ echo $DBUS_SESSION_BUS_ADDRESS
unix:path=/tmp/dbus-3kIhCSkzBl,guid=40b6408906fa1337ba8283c06395fb80
$ echo $XDG_RUNTIME_DIR
/run/user/1000
$ systemctl --machine=$USER@$(hostname) --user enable vdirsyncer.timer
Cannot access user instance remotely.
答案1
我遇到了同样的问题。就我而言,问题是我首先使用了su - <user>
or 。sudo -u <user>
默认情况下,这些命令不保留$DBUS_SESSION_BUS_ADDRESS
和等环境变量$XDG_RUNTIME_DIR
。
使用ssh登录解决了问题:
ssh <user>@localhost
答案2
您可能正在使用sudo -u $USER -i
或su - $USER
不为用户模拟完整的 systemd 会话。
您应该首先使用以下命令登录到您的新用户
machinectl shell [email protected]
然后你可以做
systemctl --user enable vdirsyncer.timer