Systemd

如何在 Debian 8 上禁用核心轉儲

  • May 29, 2020

我假裝我已經嘗試了所有的方法,但是當我的 Debian 8 發生崩潰時,我會不斷創建核心轉儲。它大約在一個月內發生一次或兩次。它是一些網站的生產伺服器,帶有打包的 Apache 2.4、php5-fpm 和 mysql。我懷疑它是 php5-fpm 崩潰,因為我在 DocumentRoot 文件夾中獲取了轉儲文件。我得到的文件名為“核心”,它的大小約為千兆字節。

這是我已經為禁用核心轉儲所做的,但沒有成功:

ln -s /dev/null /etc/systemd/coredump.conf

然後重新啟動。沒有骰子。

echo '*               hard    core    0' >> /etc/security/limits.conf
echo "fs.suid_dumpable = 0" >> /etc/sysctl.conf
sysctl -p

然後重新啟動。還是沒有骰子。我沒有將 kernel.suid_dumpable 設置為 0,因為我後來找到了它,但是當我找到它時,我還讀到零是它的預設值。無論如何,這些設置不應該有任何區別,因為 php5-fpm 不是 setuid。Apache 和 mysql 也是如此,以防它不是 php5-fpm 崩潰。

目前有一個腳本可以查找核心轉儲並刪除它們。Crontab 完成了剩下的工作,但它不是最好的解決方案。

如何在 Debian 8 中全域且無條件地禁用核心轉儲?

在 Michael Hampton 對 Froggiz 的回答發表評論後,我注意到 Debian 似乎缺少 coredump.conf 手冊頁,所以我在網際網路上查找並找到了它。該手冊頁包含很多有用的資訊,我想知道為什麼 Debian 沒有它(也許 Debian 沒有整個 systemd-coredump 的東西?)。

但是,從該手冊頁和 systemd-coredump 手冊頁看來,我得到的核心文件並非來自 systemd,因為 systemd 將它們放在 /var/lib/systemd/coredump 或取決於 Storage 選項的日誌中,但從不在崩潰程序的工作目錄。此外,systemd-coredump 手冊頁(在 Debian 中也沒有)說,要使核心轉儲功能正常工作,您需要配置 kernel.core_pattern sysctl 參數以使核心實際上將核心轉儲交給 systemd-coredump。

然後,我查看了 kernel.core_pattern 的 Debian 值:Debian 預設情況下將該參數設置為“core”,這恰好是我得到的核心轉儲文件的名稱。

我現在假設該設置

kernel.core_pattern=|/bin/true

(或 /bin/false )根據 core(5) 手冊頁在 sysctl.conf 中解決問題。

如果我注意到伺服器停止創建核心文件,我將在幾週內最終接受我的答案。很抱歉,我不能接受邁克爾的評論作為答案,但非常感謝他為我指出了我認為正確的方向。

編輯:我在這裡找到了一種無需等待自發崩潰即可測試配置的方法,我確認這是正確的答案。

引用自:https://serverfault.com/questions/737461