jab*_*jab 14 linux linux-kernel perf
我目前在运行linux perf时遇到问题,主要是因为/proc/sys/kernel/kptr_restrict
当前设置为1.
但是,如果我尝试/proc/sys/kernel/kptr_restrict
通过如下回显0来...
echo 0 > /proc/sys/kernel/kptr_restrict
Run Code Online (Sandbox Code Playgroud)
我得到一个权限被拒绝错误.我认为我也不能改变它的权限.
有没有办法直接设置这个?我是超级用户.我不认为如果没有这个设置,perf将会起到可接受的作用.
小智 22
在您的示例中,echo
以root身份运行,但您的shell正在以您的身份运行.
所以请尝试这个命令:
sudo sh -c " echo 0 > /proc/sys/kernel/kptr_restrict"
Run Code Online (Sandbox Code Playgroud)
Fra*_*iat 19
位于的所有文件/proc/sys
只能修改root
(实际上99.9%的文件,请检查ls -l
).因此,您必须使用它sudo
来修改这些文件(或以root身份执行命令的首选方式).
修改文件的正确方法/proc/sys
是使用该sysctl
工具.请注意,yu应该/
用点(.
)替换斜杠()并省略/proc/sys/
前缀...阅读精细手册.
读取当前值:
$ sysctl kernel.kptr_restrict
kernel.kptr_restrict = 1
Run Code Online (Sandbox Code Playgroud)
修改值:
$ sudo sysctl -w kernel.kptr_restrict=0
sysctl kernel.kptr_restrict=1
Run Code Online (Sandbox Code Playgroud)
要使修改重新持久,您应该编辑 /etc/sysctl.conf
或创建文件/etc/sysctl.d/50-mytest.conf
(以root或使用方式编辑文件sudoedit
),包含:
kernel.kptr_restrict=1
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您应该执行此命令来重新加载配置:
$ sysctl -p /etc/sysctl.conf
Run Code Online (Sandbox Code Playgroud)
PS可以直接写入虚拟文件./sf/users/22521131/命令相当优雅:echo 0 | sudo tee /proc/sys/kernel/kptr_restrict