登录
首页 >  Golang >  Go问答

写入当前进程的 PID 到 cgroups.procs 失败且遇到权限拒绝错误

来源:stackoverflow

时间:2024-03-23 21:36:39 120浏览 收藏

在将进程 ID 写入手动创建的 cgroup 时遇到权限拒绝错误。错误消息显示“open /sys/fs/cgroup/pids/scratch-container-cgroup0049cba7-8f9e-42ec-9646-9b1babbfebc3/cgroups.procs: permission denied”。文件“cgroup.procs”的权限为“rw-r--r--”,但无论是使用 Go 语言还是 bash 都无法写入。

问题内容

我正在尝试将 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

我不确定我在这里缺少什么可用于编写的 cgroup。我在运行 systemd 的 centos 上。

我可以写入 pids.maxnotify_on_release

我非常感谢这里的见解。


解决方案


无法谈论 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/)。

到这里,我们也就讲完了《写入当前进程的 PID 到 cgroups.procs 失败且遇到权限拒绝错误》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>