17

現在、Linux perf の実行に問題があります。主な理由/proc/sys/kernel/kptr_restrictは、現在 1 に設定されているためです。

ただし、/proc/sys/kernel/kptr_restrict次のように 0 をエコーし​​てみますと...

echo 0 > /proc/sys/kernel/kptr_restrict

許可が拒否されたというエラーが表示されます。権限も変更できないと思います。

どういうわけかこれを直接設定する方法はありますか?私はスーパーユーザーです。これが設定されていないと、perf が適切に機能するとは思えません。

4

2 に答える 2

29

あなたの例でechoは、ルートとして実行されていますが、シェルはあなたとして実行されています。

したがって、次のコマンドを試してください。

sudo sh -c " echo 0 > /proc/sys/kernel/kptr_restrict"
于 2013-12-05T04:20:47.223 に答える
22

にあるすべてのファイルは、/proc/sysによってのみ変更できますroot(実際には 99.9% のファイル、 で確認してくださいls -l)。したがってsudo、これらのファイルを変更するには を使用する必要があります (または、ルートとしてコマンドを実行するための推奨される方法)。

のファイルを変更する適切な方法/proc/sysは、ツールを使用することsysctlです。/スラッシュ ( ) をドット ( ) に置き換え.、プレフィックスを省略する必要があることに注意してください/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(ルートとしてファイルを編集するか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

于 2016-03-28T13:26:27.430 に答える