我试图将pid写入手动创建的cgroup,但无法执行此操作。
在编写时,我收到以下错误:
open /sys/fs/cgroup/pids/scratch-container-cgroup0049cba7-8f9e-42ec-9646-9b1babbfebc3/cgroups.procs: permission denied
该文件具有以下权限:
[~~]$ ls -l cgroup.procs
-rw-r--r-- 1 root root 0 Feb 14 23:27 cgroup.procs
[~~]$
我在Go语言中编写的代码如下所示
procs := filepath.Join(containerCgroupPath, "cgroups.procs")
currentPid := strconv.Itoa(os.Getpid())
log.Printf("current pid is %s", currentPid)
if err := ioutil.WriteFile(procs, []byte(currentPid), 0777); err != nil {
return err
}
但是,使用bash也会产生相同的错误。
sudo echo "100" > cgroup.procs
bash: cgroup.procs: Permission denied
我不知道我在这里错过了什么关于cgroups可以用来写。我在Centos上运行systemd。
我可以写入pids.max
和notify_on_release
我真的很欣赏这里的见解。
3条答案
按热度按时间q5lcpyga1#
不能谈论go代码,但bash中的问题很可能归结为以下几点:
How do I use sudo to redirect output to a location I don't have permission to write to?
如果这对您没有帮助,请检查您是否有权限写入进程
100
(echo /proc/100/cgroup
)的公共父进程中的cgroup.procs
文件以及您要将其移动到的cgroup(/sys/fs/cgroup/pids/scratch-container-cgroup0049cba7-8f9e-42ec-9646-9b1babbfebc3/
)。yws3nbqq2#
代码中正确的文件名应该是“cgroup.procs”而不是“cgroups.procs”
tkqqtvp13#
我也遇到过同样的问题。我尝试了以下方法,效果很好
但我无法解释原因。