![데스크탑 세션 없이 Systemd 사용자 서비스를 사용하는 방법 [D-Bus 없이]](https://linux55.com/image/208908/%EB%8D%B0%EC%8A%A4%ED%81%AC%ED%83%91%20%EC%84%B8%EC%85%98%20%EC%97%86%EC%9D%B4%20Systemd%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%20%5BD-Bus%20%EC%97%86%EC%9D%B4%5D.png)
명시적으로 중지할 때까지 실행해야 하는 사용자 수준 서비스(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