我目前无法运行linux perf,主要是因为/proc/sys/kernel/kptr_restrict
目前设置为1。
但是,如果我通过回复0来尝试/proc/sys/kernel/kptr_restrict
,如下所示......
echo 0 > /proc/sys/kernel/kptr_restrict
我收到了拒绝权限错误。我认为我也不能更改它的权限。
有没有办法直接设置这个?我是超级用户。我不认为如果没有设置,perf就会起到可接受的作用。
答案 0 :(得分:20)
在您的示例中,echo
以root身份运行,但您的shell正在以您的身份运行。
所以请尝试这个命令:
sudo sh -c " echo 0 > /proc/sys/kernel/kptr_restrict"
答案 1 :(得分:16)
位于/proc/sys
的所有文件只能由root
修改(实际上是99.9%的文件,请与ls -l
一起检查)。因此,您必须使用sudo
来修改这些文件(或以root身份执行命令的首选方式)。
修改/proc/sys
中文件的正确方法是使用sysctl
工具。请注意,yu应该用点(/
)替换斜杠(.
)并省略/proc/sys/
前缀...阅读精细手册。
阅读当前值:
$ sysctl kernel.kptr_restrict
kernel.kptr_restrict = 1
修改值:
$ sudo sysctl -w kernel.kptr_restrict=0
sysctl kernel.kptr_restrict=1
要使您的修改重新启动,您应该编辑/etc/sysctl.conf
或在/etc/sysctl.d/50-mytest.conf
中创建文件(以root身份或使用sudoedit
编辑文件),其中包含:
kernel.kptr_restrict=1
在这种情况下,您应该执行此命令来重新加载配置:
$ sysctl -p /etc/sysctl.conf
P.S。可以直接写入虚拟文件。 https://stackoverflow.com/users/321730/cdyson37命令非常优雅:echo 0 | sudo tee /proc/sys/kernel/kptr_restrict