Linux
Linux Kernel.org 對核心恐慌 /proc/sys/kernel/panic 的誤導
我一直
/proc/sys/kernel/panic
設置為0
. 查看kernel.org中此選項的描述,我們可以看到:恐慌:
此文件中的值表示核心在出現緊急情況時重新啟動之前等待的秒數。使用軟體看門狗時,推薦設置為 60。
從這裡可以得出結論,
0
在重新啟動前等待 0 秒 - 立即重新啟動。但
proc
MAN 頁面聲明如下:/proc/sys/kernel/panic
此文件提供對核心變數panic_timeout 的讀/寫訪問權限。如果這是零,核心將在恐慌中循環;如果非零,則表示核心應在此秒數後自動重啟。使用軟體看門狗設備驅動程序時,推薦設置為 60。
這
0
意味著對立的事情-永遠不要重新啟動。那麼,為什麼這樣一個值得信賴的來源會提供如此誤導性的資訊呢?或者 MAN 頁面不准確?
PS 只是從一
panic_on_oops
節中的提示(如果你碰巧讀到這個)你可以猜到 MAN 頁面是正確的。或者,如果您在技術上足夠熟練,可以調查核心原始碼中的某些內容。
權威來源是核心中的實現,所以讓我們先看一下。
中的
panic
條目sysctl
對應於一個名為 的核心變數panic_timeout
。這是一個有符號整數,用於控制恐慌時的行為,如下所示:
- 如果
panic_timeout
是嚴格肯定的,核心會在恐慌後等待panic_timeout
幾秒鐘;- 如果
panic_timeout
不為零,則核心在恐慌後重新啟動(如果合適,在等待之後);- 如果核心沒有重新啟動,它會列印一條消息並永遠循環。
所以手冊頁是正確的,核心自己的文件不完整;但
sysctl/kernel.rst
現在文件panic
更詳細。這已在核心 5.7-rc1 版本中得到修復。