cgroups/systemd: 프로세스 트리에 대한 cgroup을 생성하는 방법[비루트]

cgroups/systemd: 프로세스 트리에 대한 cgroup을 생성하는 방법[비루트]

루트가 아닌 사용자로서 저는 여러 다른 프로세스("만들기" 세션 또는 Google Chrome이 각 탭에 대해 프로세스를 시작하는 방식 등)를 시작하고 전체 프로세스 트리를 표시하는 프로세스를 시작할 수 있기를 원합니다. 단위로 - 예를 들어 이 하위 트리가 CPU의 200%를 소비하는 것을 보고 싶습니다. sudo 액세스 권한이 있지만 사용하고 싶지 않습니다.

내가 가지고 있는 가장 가까운 것과 동등한 것은 있지만 systemd-run --scope프로세스 트리나 범위 또는 동등한 것을 찾을 수 없습니다 systemd-cgls. 또한 루트로 실행해야 하므로 sudo를 사용한 다음 래퍼를 사용하여 권한을 제거해야 합니다. 더 좋은 방법이 있나요? 이상적으로는 Debian Jessie이지만 필요한 경우 Stretch도 가능합니다. 솔루션이 단순할수록 유지 관리의 번거로움 없이 여러 시스템에 배포할 수 있으므로 더 좋습니다.

답변1

다음 명령을 사용하여 사용자 범위 그룹을 시작하기 위해 루트일 필요는 없습니다 systemd-run.

$ systemd-run --user --scope /bin/bash 
  Running scope as unit run-23318.scope.
  $ sleep 999 &
  [1] 23369

단위를 볼 수 있습니다:

$ systemctl --user status run-23318.scope
* run-23318.scope - /bin/bash
  Loaded: loaded (/run/user/1000/systemd/user/run-23318.scope; static; 
         vendor preset: enabled)
 Drop-In: /run/user/1000/systemd/user/run-23318.scope.d
      `-50-Description.conf
  Active: active (running) since Sun 2016-07-17 08:16:51 CEST; 10min ago
  CGroup: /user.slice/user-1000.slice/[email protected]/run-23318.scope
      |-23318 /bin/bash
      `-23369 sleep 999
  Jul 17 08:16:51 home systemd[1056]: Started /bin/bash.
  Jul 17 08:16:51 home systemd[1056]: Starting /bin/bash.

그리고 또한

$ systemd-cgls /user.slice/user-1000.slice/[email protected]/run-23318.scope
   /user.slice/user-1000.slice/[email protected]/run-23318.scope:
   |-23318 /bin/bash
   `-23369 sleep 999

관련 정보