명시적으로 중지할 때까지 실행해야 하는 사용자 수준 서비스(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