cgroups/systemd:如何为进程树创建 cgroup

cgroups/systemd:如何为进程树创建 cgroup

作为非 root 用户,我希望能够启动一个进程,该进程将启动一堆其他进程(想想“make”会话,或者 Google Chrome 为每个选项卡启动进程的方式)并拥有整个进程树作为一个单元可见 - 例如,我想看到这个子树消耗了 200% 的 CPU。我确实有 sudo 访问权限,但不想使用它。

我拥有的最接近的等效项是systemd-run --scope,但我无法找到进程树或范围systemd-cgls或等效项。另外,它必须以 root 身份运行,所以我必须使用 sudo,然后使用包装器删除权限。有一个更好的方法吗?理想情况下是 Debian Jessie,如果必须的话也可以使用 Stretch。解决方案越简单越好,因为这可以让我将其部署到多台计算机上,而无需维护麻烦。

答案1

您不需要成为 root 即可使用以下命令启动用户范围的组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

相关内容