Назад | Перейти на главную страницу

cgexec не наследует LD_LIBRARY_PATH

Мой /etc/cgconfig.conf файл состоит из

mount {
        cpuset  = /cgroup/cpuset;
        cpu     = /cgroup/cpu;
        cpuacct = /cgroup/cpuacct;
        memory  = /cgroup/memory;
        devices = /cgroup/devices;
        freezer = /cgroup/freezer;
        net_cls = /cgroup/net_cls;
        blkio   = /cgroup/blkio;
}

# make sure this cgroup cannot run more than 100%
group proc1 {
        perm {
                task {
                        uid = jmichael;
                        gid = hpcfadmins;
                } admin {
                        uid = jmichael;
                        gid = hpcfadmins;
                }
        }
        cpu {
                cpu.cfs_quota_us = "1000000";
                cpu.cfs_period_us = "1000000";
        }
}

group proc2 {
        cpu {
                cpu.cfs_quota_us = "2000000";
                cpu.cfs_period_us = "1000000";
        }
}

и я заметил, что при запуске cgexec -g cpu:proc1 myCode.sh (который содержит двоичный файл, скомпилированный с определенной версией gcc), который жаловался на библиотеки. После дальнейшего расследования я обнаружил, что env дает мне другие результаты, чем cgexec -g cpu:proc1 env. В частности, LD_LIBRARY_PATH не включается в вывод cgexec версия.

Как я могу получить cgexec унаследовать мой LD_LIBRARY_PATH?

В качестве простого теста обратите внимание на результаты следующих команд:

$ env | grep 'LD_LIBRARY_PATH' | sed 's/=.*//'
LD_LIBRARY_PATH
$ cgexec -g cpu:proc1 env | grep 'LD_LIBRARY_PATH' | sed 's/=.*//'
$