데스크탑 세션 없이 Systemd 사용자 서비스를 사용하는 방법 [D-Bus 없이]

데스크탑 세션 없이 Systemd 사용자 서비스를 사용하는 방법 [D-Bus 없이]

명시적으로 중지할 때까지 실행해야 하는 사용자 수준 서비스(Python/Java/Node JS 프로세스)를 설정하려고 합니다. 루트가 아닌 사용자로 서비스를 시작/중지해야 합니다.

~/.config/systemd/user/ 아래에 서비스 파일을 만들었습니다. 로드하려고 하면,systemctl --사용자 데몬 다시 로드, 다음 오류와 함께 실패합니다.

$ systemctl --user daemon-reload
Failed to get D-Bus connection: No such file or directory

D-Bus는 데스크톱 세션 없이는 실행되지 않는다는 것을 알고 있지만 데스크톱 세션이 없으면 회사에서 제공하는 가상 머신 중 하나입니다. Linux 서버에서는 데스크톱 세션을 활성화하지 않습니다.

$ ps -ef | grep systemd | grep -v grep
root          1      0  0 Jul25 ?        00:01:33 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root        544      1  0 Jul25 ?        00:00:33 /usr/lib/systemd/systemd-journald
root        591      1  0 Jul25 ?        00:00:03 /usr/lib/systemd/systemd-udevd
dbus        783      1  0 Jul25 ?        00:01:21 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
root        857      1  0 Jul25 ?        00:00:34 /usr/lib/systemd/systemd-logind

데스크톱 세션 없이 사용자 수준 서비스를 만드는 방법은 무엇입니까?

답변1

단 두 개의 명령으로 작동합니다.

cat << 'EOF' >> ~USERNAME/.profile
export XDG_RUNTIME_DIR=/run/user/$(id -u)
EOF
loginctl enable-linger $USERNAME

관련 정보