Linux

Linux Kernel.org 對核心恐慌 /proc/sys/kernel/panic 的誤導

  • March 29, 2021

我一直/proc/sys/kernel/panic設置為0. 查看kernel.org中此選項的描述,我們可以看到:

恐慌:

此文件中的值表示核心在出現緊急情況時重新啟動之前等待的秒數。使用軟體看門狗時,推薦設置為 60。

從這裡可以得出結論,0在重新啟動前等待 0 秒 - 立即重新啟動。

procMAN 頁面聲明如下:

/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 版本中得到修復

引用自:https://unix.stackexchange.com/questions/564735