X 없이 사용자로 서비스 실행(systemctl)

X 없이 사용자로 서비스 실행(systemctl)

최소한의 centos8을 실행하는 소규모 서버가 있습니다. 사용자로서 서비스를 생성해야 하며 이 작업을 수행하기 위해 systemctl을 사용하고 싶습니다. systemctl --user를 사용하여 루트 권한 없이 서비스를 생성할 수 있지만 이러한 명령을 사용하면 다음과 같은 결과가 발생합니다.

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"

어쨌든 /run/user/가 비어 있는 것 같아서 systemctl --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

dbus를 작동시키고 서비스에 액세스하기 위해 Xsession을 실행해야 한다는 것은 합리적이지 않은 것 같습니다(어쨌든 서버는 헤드리스이고 x 서버가 없으며 Windows에서 ssh를 실행하고 있습니다).

이 시점에서 sshd에 문제가 있는 것 같은데 무엇을 검색해야 할지 모르겠습니다.

답변1

아마도 당신이 원하는 것은dbus-monitor --system

관련 정보