以不带 X 的用户身份运行服务 (systemctl)

以不带 X 的用户身份运行服务 (systemctl)

我有一台小型服务器,运行最小的 centos8。我需要以用户身份创建服务,并希望使用 systemctl 来执行此操作。我发现我可以使用 systemctl --user 在没有 root 权限的情况下创建服务,但任何这些命令都会导致:

Failed to connect to bus: No such file or directory

经过初步的 Google 搜索后,我发现罪魁祸首是缺少 XDG_ env 变量,在导出中手动添加它们后:

$ export -p | grep XDG
declare -x XDG_RUNTIME_DIR="/run/user/1000"
declare -x XDG_SESSION_ID="328295"

无论如何,我无法运行 systemctl --user ,因为我猜 /run/user/ 是空的。

$ systemctl status dbus
● dbus.service - D-Bus System Message Bus
   Loaded: loaded (/usr/lib/systemd/system/dbus.service; static; vendor preset: disabled)
   Active: active (running) since Wed 2021-01-13 14:26:04 GMT; 5h 43min ago
     Docs: man:dbus-daemon(1)
 Main PID: 332 (dbus-daemon)
    Tasks: 1 (limit: 26213)
   Memory: 3.6M
   CGroup: /system.slice/dbus.service
           └─332 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile -->

dbus 似乎运行良好,我发现的唯一异常是:

$ loginctl session-status
328295 - server (1000)
           Since: Wed 2021-01-13 20:00:44 GMT; 10min ago
          Leader: 29745 (sshd)
          Remote: #############
         Service: sshd; type tty; class user
           State: active
            Unit: session-328295.scope
                  ├─29745 sshd: server [priv]
                  ├─29747 sshd: server@pts/0
                  ├─29748 -bash
                  ├─29790 loginctl session-status
                  └─29791 loginctl session-status

显示为 sshd 的是该会话的 init 进程(可能会导致 dbus 出现问题?)。只是为了检查我的情况:

$ dbus-monitor
Failed to open connection to session bus: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11

这似乎不合理,我不应该运行 Xsession 来让 dbus 工作并访问服务(无论如何,服务器是无头的,没有 x-server,而且我从 Windows 运行 ssh)。

此时我认为sshd有问题,但我不知道该搜索什么。

答案1

你可能想要的是dbus-monitor --system

相关内容