다른 기존 시스템 세션 또는 범위에서 명령을 실행하는 방법은 무엇입니까?
내가 아는 한, 프로세스가 둘 중 하나에 있는 한 세션과 세션의 범위 단위 사이에는 차이가 없습니다.
이 문제는 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)
.
노트:
- 연결할 장치를 설정해야 합니다
Delegate=yes
( 참조man:systemd.resource-control(5)
). - pid 배열을 전달하려면 pid 앞에 배열 길이(위 예에서는 1)를 전달해야 합니다.
지정된 범위에 연결한 후 systemd-cgls
또는 를 통해 범위의 하위 프로세스를 볼 수 있습니다 systemctl --user status app-sleep.scope
.