다른 기존 시스템 범위 또는 세션에서 명령을 실행하는 방법은 무엇입니까?

다른 기존 시스템 범위 또는 세션에서 명령을 실행하는 방법은 무엇입니까?

다른 기존 시스템 세션 또는 범위에서 명령을 실행하는 방법은 무엇입니까?

내가 아는 한, 프로세스가 둘 중 하나에 있는 한 세션과 세션의 범위 단위 사이에는 차이가 없습니다.

이 문제는 Gnome에서는 터미널에서 실행되는 명령 이 gnome-terminal-server.service.session-xx.scope

(참고: 이는 반대입니다.이것기존 프로세스에 대한 새로운 범위를 생성해야 하는 문제. )

답변1

@감마 함수올바른 방향을 가리키며 다음 명령을 성공적으로 사용했습니다.

$ systemd-run --user --scope --unit="app-sleep" --property=Delegate=yes sleep 9999 &
$ disown
$ sleep 8888 &
$ pid=$(jobs -p)
$ busctl --user call org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager AttachProcessesToUnit ssau "app-sleep.scope" / 1 "$pid"

여기 ssau(내 생각에 string, , string)는 array of unsigned함수에 전달된 매개변수 유형을 나타내며 AttachProcessesToUnit, 이 함수에 대한 문서는 에서 찾을 수 있습니다 man:org.freedesktop.systemd1(5).

노트:

  1. 연결할 장치를 설정해야 합니다 Delegate=yes( 참조 man:systemd.resource-control(5)).
  2. pid 배열을 전달하려면 pid 앞에 배열 길이(위 예에서는 1)를 전달해야 합니다.

지정된 범위에 연결한 후 systemd-cgls또는 를 통해 범위의 하위 프로세스를 볼 수 있습니다 systemctl --user status app-sleep.scope.

관련 정보