cgrulesengd不能将pid移动到任务文件,而像deamon一样运行,如果我重新启动cgrulesengd,所有的pid都被正确地移动到任务文件,但是新的pid没有。
所以,如果我以你好用户的身份login,然后从根目录cgrulesengd -n -d,用户hello和他的所有进程运行到/ cgrup / mem / hello / tasks文件。 但是当我注销并login时,用户hello不再受cgrulesengd影响。
这是我的testing文件。
#!/bin/bash USER='hello' cgdelete memory:${USER}/ cgclear /etc/rc.d/rc.cgred stop umount /cgroup/mem rm -fr /cgroup/mem/ mkdir /cgroup/mem mount -t cgroup -o memory mem /cgroup/mem mkdir /cgroup/mem/${USER} chown root:root /cgroup/mem/${USER}/* chown ${USER}:root /cgroup/mem/${USER}/tasks echo 100M > /cgroup/mem/${USER}/memory.limit_in_bytes echo 100M > /cgroup/mem/${USER}/memory.memsw.limit_in_bytes [ ! -f '/etc/cgrules.conf_orig' ] && cp -pa /etc/cgrules.conf /etc/cgrules.conf_orig echo "${USER} memory ${USER}/" > /etc/cgrules.conf #echo "* * system/" >> /etc/cgrules.conf /etc/rc.d/rc.cgred start #cgrulesengd -n -d ls -all /cgroup/mem/${USER}/tasks cat /cgroup/mem/${USER}/tasks echo -n "memory.limit_in_bytes " cat /cgroup/mem/${USER}/memory.limit_in_bytes echo -n "memory.max_usage_in_byte " cat /cgroup/mem/${USER}/memory.max_usage_in_bytes echo -n "memory.memsw.limit_in_bytes " cat /cgroup/mem/${USER}/memory.memsw.limit_in_bytes echo -n "memory.memsw.max_usage_in_bytes " cat /cgroup/mem/${USER}/memory.memsw.max_usage_in_bytes
输出:
./test_cgred.sh Stopping CGroup Rules Engine Daemon... [ OK ] umount: /cgroup/mem: not mounted Starting CGroup Rules Engine Daemon: [ OK ] -rw-r--r-- 1 hello root 0 Sep 26 00:46 /cgroup/mem/hello/tasks memory.limit_in_bytes 104857600 memory.max_usage_in_byte 0 memory.memsw.limit_in_bytes 104857600 memory.memsw.max_usage_in_bytes 0
我刚刚发现,当memory.max_usage_in_byte和memory.memsw.max_usage_in_bytes是!= 0时,所有新的pid都会正确移动。
我的问题是:
memory.max_usage_in_byte和memory.memsw.max_usage_in_bytes得到0? 版本:libcgroup-0.41-x86_64-1
临时解决scheme:将echo $$ >> /cgroup/mem/$USER/tasks到/ etc / profile。