作为非 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