세션 범위에서 서비스(또는 대상)를 시작하는 방법은 무엇입니까?

세션 범위에서 서비스(또는 대상)를 시작하는 방법은 무엇입니까?

xmonad(창 관리자), emacs 데몬, tmux 세션 등 데스크톱 세션에 대한 대부분의 프로세스를 시작하기 위해 systemd를 사용합니다.

loginctl user-status세션 아래에 몇 가지 프로세스만 표시되도록 내 사용자 프로세스를 나열합니다 .

  Unit: user-1000.slice
        ├─session-5.scope
        │ ├─4740 lightdm --session-child 13 16
        │ ├─5047 systemctl --user --wait start xmonad-systemd-session.target
        │ └─5497 /usr/bin/ssh-agent /usr/bin/im-launch xmonad-systemd-session
        └─[email protected]

거의 모든 프로세스가 아래 세션 외부에서 실행되고 있습니다 [email protected]. 이는 loginctl session-statustmux에서 실행하면 다음이 제공된다는 의미입니다.

Could not get properties: Caller does not belong to any known session

특정 로그인 세션에서 특정 서비스를 시작하도록 systemd에 지시하고 싶습니다. 이상적으로는 세션 시작 스크립트에 다음과 같이 작성합니다.

exec systemctl --user --wait \
    --scope $MY_DESKTOP_SESSION start xmonad-systemd-session.target

하지만 옵션이 없으며 --scope범위 이름을 얻는 방법을 모르겠습니다.

저는 libpam-systemd 및 dbus-user-session을 사용하여 Debian-ish (사내) 배포판에서 systemd 240을 실행하고 있습니다.

답변1

systemd가 이미 포함된 프로세스의 범위 내에서 서비스를 허용하는지 확실하지 않습니다. ~에 따르면제어 그룹 인터페이스 문서범위 또는 서비스는 프로세스와 다른 범위/서비스를 모두 하위로 가질 수 없습니다. (또는 실제로는 슬라이스에 서비스와 범위만 포함되어 있고 서비스와 범위에는 프로세스가 포함되어 있다고 나와 있습니다. 하지만 내 시스템에 서비스가 있기 때문에 시스템이 이 문서를 따르지 않는 것 같습니다.[이메일 보호됨].)

이미 세션에 있는 것에서 시작하도록 하여 세션 범위 내에서 프로세스를 실행할 수 있습니다. Gnome에서는 Alt+F2 또는 xterm(자체 서비스로 실행되는 gnome-termal은 아님)에서 실행되는 명령이 세션 범위 내에서 실행됩니다. 프로세스 범위를 확보하는 다른 방법은 없습니다. 또한보십시오이것.

세션 내에 서비스를 갖고 싶을 때가 있다는 것은 분명합니다(예: 세션이 종료되면 종료하고, 세션이 여러 개인 경우 여러 복사본을 보유). 존재하지 않는 경우 시간이 좀 걸릴 것으로 예상됩니다. 짓다.

관련 정보