我目前在运行 linux perf 时遇到问题,主要是因为/proc/sys/kernel/kptr_restrict
当前设置为 1。
但是,如果我尝试/proc/sys/kernel/kptr_restrict
通过如下方式回显 0...
echo 0 > /proc/sys/kernel/kptr_restrict
我收到权限被拒绝错误。我认为我也不能更改它的权限。
有没有办法以某种方式直接设置它?我是超级用户。如果没有设置,我认为 perf 无法正常运行。
我目前在运行 linux perf 时遇到问题,主要是因为/proc/sys/kernel/kptr_restrict
当前设置为 1。
但是,如果我尝试/proc/sys/kernel/kptr_restrict
通过如下方式回显 0...
echo 0 > /proc/sys/kernel/kptr_restrict
我收到权限被拒绝错误。我认为我也不能更改它的权限。
有没有办法以某种方式直接设置它?我是超级用户。如果没有设置,我认为 perf 无法正常运行。
在您的示例中,echo
以 root 身份运行,但您的 shell 以您身份运行。
所以请试试这个命令:
sudo sh -c " echo 0 > /proc/sys/kernel/kptr_restrict"
位于的所有文件/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
PS可以直接写入虚拟文件。https://stackoverflow.com/users/321730/cdyson37命令相当优雅:echo 0 | sudo tee /proc/sys/kernel/kptr_restrict