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

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

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

答案1

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

  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,但有时系统会限制对rootsudo的访问dpkg

还会有很多其他方式。

答案2

您可以使用以下命令检查内核配置中启用了哪些 cgroup 功能:

# zcat /proc/config.gz | grep CGROUP
CONFIG_CGROUPS=y
CONFIG_BLK_CGROUP=y
# CONFIG_DEBUG_BLK_CGROUP is not set
CONFIG_CGROUP_WRITEBACK=y
CONFIG_CGROUP_SCHED=y
CONFIG_CGROUP_PIDS=y
# CONFIG_CGROUP_RDMA is not set
# CONFIG_CGROUP_FREEZER is not set
CONFIG_CGROUP_HUGETLB=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_CPUACCT=y
CONFIG_CGROUP_PERF=y
# CONFIG_CGROUP_DEBUG is not set
# CONFIG_SOCK_CGROUP_DATA is not set
# CONFIG_NETFILTER_XT_MATCH_CGROUP is not set
# CONFIG_CGROUP_NET_PRIO is not set
# CONFIG_CGROUP_NET_CLASSID is not set

(注:为了/proc/config.gz显示

CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y

需要设置)

相关内容