如何检查 Linux 主机上的 cgroup 是否可用?

cod*_*ter 5 linux cgroups containers unshare

是否有命令可以检查容器服务是否在 Linux 系统上运行?有人建议,unshare但我不确定这是否是最好的方法。

use*_*316 5

更新:重新阅读您的问题后,我意识到我的回答略有不同。您想知道服务是否正在运行,我最初回答过如何判断软件包是否已安装。要回答您的实际问题,这取决于您的初始化系统。

  1. systemd - 基本命令是systemctl,它将列出所有服务及其状态,因此您可以手动浏览它或通过grep命令管道它,如下所示:systemctl | grep -e cgmanager -e cgproxy -e cgroupfs-mount。或者,正如用户 muru 在评论中建议的那样,简单地systemctl status 'cg*'.

  2. sysVinit - 基本命令是service --status-all,grep 命令是service --status-all 2>&1 | grep -e cgmanager -e cgproxy -e cgroupfs-mount。请注意,在这种情况下,正在运行的服务用前缀符号表示[+]。另请注意,要使 grep 正常工作,2>&1必须对该命令进行重定向service

原答案:

  1. 也许最简单的事情就是尝试man cgroups。如果出现文档页面,则表明您的主机已安装该软件包。然而,有些安装是“吝啬的”并且不安装man页面。

  2. 您可以尝试cgm看看是否会产生输出。大多数安装cgroups都会包含该命令,但不一定。

  3. 您可以查找主机发行版的软件包列表。在 Debian 衍生品上,这将是dpkg -l |grep cgroup,但有时系统会限制对root或 的sudo访问dpkg

还会有很多其他方式。

  • 这些都有效。你也可以`cat /proc/mounts`,你会看到几个`cgroups`挂载在`/sys/fs/cgroup`中。对于“Fedora”及其相关产品,您可以使用“rpm -qa \*cgroup\*”找到“libcgroup”和“libcgroup-tools”软件包。 (8认同)
  • `systemctl` 接受通配符,如下所示: `systemctl status 'cg*'` (或 `systemctl list-units 'cg*'`) (2认同)