为什么在 14.04 重启时没有读取 cgconfig.conf?

rif*_*aff 5 startup restart cgroup 14.04

我最近将一个版本从 12.04 升级到 14.04,发现我的 cgconfig.conf 文件在启动时不再被读取。

该文件似乎是正确的,因为我可以显式加载它

sudo cgconfigparser -l /etc/cgconfig.conf
Run Code Online (Sandbox Code Playgroud)

但这不会在重新启动时自动发生,这意味着在启动时运行的其他脚本会失败(因为它们依赖 cgexec 和 cgconfig.conf 中定义的组)。

我需要做些什么才能自动使用该文件?(即安装一些包)我必须以某种方式将此文件转换为其他文件吗?

这曾经在升级前正常工作,所以我对可能出现的问题感到困惑。

我认为应该对此负责的“cgroup-lite”包也已安装。

提前致谢。

mur*_*uru 4

由于修复了 bug #1096771 ,这看起来像是回归。12.04中有一些 init 脚本cgroup-bin,在 13.04 中被删除。服务/etc/init/cgconfig.conf文件在以下节中包含此内容pre-start script

/usr/sbin/cgconfigparser -l $CGCONFIG
Run Code Online (Sandbox Code Playgroud)

因此,实际设置 cgroup 配置的是包cgconfig中的服务。这些版本之间没有太大变化,所以我认为它并不意味着读取此配置。我建议您打开一份错误报告(也许还可以编写一个新的 Upstart 服务(或复制旧的服务),因为他们不太可能在 LTS 版本中更改这一点)。cgroup-bincgroup-lite


由于仍然支持 12.04,因此您可以使用软件包索引下载旧版本的软件包。/etc/init/cgconfig.conf为了方便我转载如下:

description "cgconfig"
author "Serge E. Hallyn <serge.hallyn@ubuntu.com>"

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
Run Code Online (Sandbox Code Playgroud)