我最近将版本从 12.04 升级到 14.04,发现我的 cgconfig.conf 文件在启动时不再被读取。
该文件似乎是正确的,因为我可以明确地加载它
sudo cgconfigparser -l /etc/cgconfig.conf
但这不会在重启时自动发生,这意味着启动时运行的其他脚本会失败(因为它们依赖于在 cgconfig.conf 中定义的组的 cgexec)。
我需要做些什么才能自动使用该文件?(即安装一些包)我是否必须以某种方式将此文件转换为其他文件?
在升级之前它曾经正常工作,所以我很困惑不知道可能出了什么问题。
我认为应该负责此事的“cgroup-lite”包也已安装。
提前致谢。
答案1
这看起来像是由于修复了错误而导致的回归#1096771。12.04中有一些 init 脚本cgroup-bin
,这些脚本在 13.04 中被删除。/etc/init/cgconfig.conf
服务文件中的以下节包含以下内容pre-start script
:
/usr/sbin/cgconfigparser -l $CGCONFIG
因此,实际上是软件包cgconfig
中的服务cgroup-bin
设置了您的 cgroup 配置。cgroup-lite
在这些版本之间没有太大变化,因此我认为它不是为了读取此配置。我建议您打开错误报告(也许编写一个新的 Upstart 服务(或复制旧服务),因为他们不太可能在 LTS 版本中更改这一点)。
由于 12.04 仍受支持,因此您可以使用软件包索引下载旧版本的软件包。/etc/init/cgconfig.conf
为了方便起见,我在这里复制了:
description "cgconfig"
author "Serge E. Hallyn <[email protected]>"
start on runlevel [2345]
console output
pre-start script
test -x /usr/sbin/cgconfigparser || { stop; exit 0; }
CREATE_DEFAULT="yes"
CGCONFIG=/etc/cgconfig.conf
if [ -r /etc/default/cgconfig ]; then
. /etc/default/cgconfig
fi
# If we've already run, don't do it again!
if grep -q /sys/fs/cgroup /proc/mounts; then
stop
exit 0
fi
[ -r $CGCONFIG ] || { echo "$CGCONFIG is empty"; stop; exit 0; }
mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroups /sys/fs/cgroup
/usr/sbin/cgconfigparser -l $CGCONFIG
if [ "$CREATE_DEFAULT" = "yes" ]; then
/usr/sbin/create_default_cgroups
fi
end script
post-stop script
if [ -x /usr/sbin/cgclear ]
then
/usr/sbin/cgclear
fi
umount /sys/fs/cgroup || true
end script