/proc/sys/vm/drop_caches を生成できません: 権限が拒否されました。

/proc/sys/vm/drop_caches を生成できません: 権限が拒否されました。

コールド状態のforループでpsqlのいくつかのクエリを実行しようとしているので、Pythonを使用しています。したがって、各クエリを実行する前にキャッシュをクリアする必要があります。 osをインポートした後、次のことを行いました。

if state=="cold"
     os.system('sudo sh -c  "/usr/bin/echo 1 > /proc/sys/vm/drop_caches')

Pythonを使ってキャッシュを消去する方法を知っていますか?

Ubuntu 20.04を使用しています。

答え1

シェルの代わりにPythonを選択するのはなぜですか? Pythonでシェルコマンドを実行することは意味がありません。本当にPythonを使用したい場合は、これを行うことができます。

with open("/proc/sys/vm/drop_caches", "w") as f:
    f.write("1")

sudoスクリプト内で使用する代わりにPythonスクリプトを実行してください。

答え2

努力する

os.system('echo 1 | sudo tee /proc/sys/vm/drop_caches')

関連情報