Armadilloフォーラム

Pythonからのpanic値変更

takahashi-h

2024年7月3日 18時19分

 echo N > /proc/sys/kernel/panic
をPythonのプログラムから実行したいです。
 ※Nには具体的な数値を入れています

単純に
 os.system("echo N > /proc/sys/kernel/panic")
とすると
 cannot create /proc/sys/kernel/panic: Read-only file system
のエラーが出ます。

おそらく権限の設定が必要なのかと思われますが、具体的にどう設定すればよいかわかりません。
ご教示ください。

なお、app.confには
 add_args --cap-add=SYS_ADMIN
が設定してあります。(これではダメなのですね)

コメント

at_makoto.sato

2024年7月4日 9時51分

佐藤です。

もし、panic値 N が固定でありその値から変えることが無いのであればコンテナ内からではなく、
abos 側で /etc/sysctl.d/custom.conf のようなファイルを作り kernel.panic = N としてしまったほうが良いと思います。
その場合は以下のようにします。

armadillo:~# echo "kernel.panic = N" > /etc/sysctl.d/custom.conf
armadillo:~# persist_file /etc/sysctl.d/custom.conf
armadillo:~# rc-service sysctl restart
armadillo:~# sysctl kernel.panic # 設定されていることを確認
kernel.panic = N

panic値が固定ではなく、あくまでもコンテナ内の python プログラム内から変更したい場合は、
app.conf に "add_volumes add_volumes /proc/sys/kernel:/proc/sys/kernel" を追加してみてください。
また、"add_args --cap-add=SYS_ADMIN" は不要です。

takahashi-h

2024年7月4日 10時45分

佐藤様、回答ありがとうございました。

add_volumes /proc/sys/kernel:/proc/sys/kernel
の追加で問題なく変更されている(+パニックになってもN秒で再起動する)ことを確認しました。

前者の方法もご教示いただき、ありがとうございました。
選択肢が増えて助かります。
最終的にどちらの手法にするかは検討します。