我正在尝试以用户身份创建服务,但是它不起作用:
admin $ sudo su - media
$ systemctl --user edit fmgr-copro.service --full --force
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)
$ exit
admin $ systemctl status dbus -n 2
● dbus.service - D-Bus System Message Bus
Loaded: loaded (/lib/systemd/system/dbus.service; static)
Active: active (running) since Wed 2023-03-22 15:07:24 CET; 1 week 0 days ago
TriggeredBy: ● dbus.socket
Docs: man:dbus-daemon(1)
Main PID: 869 (dbus-daemon)
Tasks: 1 (limit: 38289)
Memory: 1.7M
CPU: 4.125s
CGroup: /system.slice/dbus.service
└─869 @dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
Mar 28 10:09:57 myServer dbus-daemon[869]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' r>
Mar 28 10:09:57 myServer dbus-daemon[869]: [system] Successfully activated service 'org.freedesktop.hostname1'
admin $ sudo su - media
$ echo $XDG_RUNTIME_DIR
$ echo $DBUS_SESSION_BUS_ADDRESS
$
EDIT0:看来DBUS_SESSION_BUS_ADDRESS
和XDG_RUNTIME_DIR
变量在之后被清除了sudo su - media
。
你能帮助我吗 ?
答案1
避免使用su
。而是使用来自的工具systemd
machinectl
systemd-run
(问题是关于交互式使用,但为了完整性,我还添加了非交互式使用)
交互式使用
sudo machinectl shell username@
非交互式使用
sudo systemd-run \
-M username@ \
--user \
--quiet \
--collect \
--pipe \
--wait \
mycommand
参考
苏是 ”不是用于打开全新登录会话的工具根据 systemd 的原作者 https://github.com/systemd/systemd/issues/7451#issuecomment-346787237