Linux

在 Ubuntu 上由 init.d 啟動時沒有守護程序的核心轉儲

  • August 25, 2010

如何在 Ubuntu 上啟動由 init.d 啟動的守護程序到 coredump?這是我到目前為止所做的……

echo "ulimit -c unlimited" >> /etc/profile
mkdir /corefiles/
chmod 777 /corefiles/
echo "kernel.core_pattern=/corefiles/core.%e.%u.%t" >> /etc/sysctl.conf
echo "fs.suid_dumpable=1" >> /etc/sysctl.conf
echo "kernel.core_uses_pid = 1" >> /etc/sysctl.conf
sysctl -p

這對除了由 init.d 在啟動時啟動的守護程序之外的所有內容都非常有用。我正在執行 Ubuntu 10.04。我正在尋找一種不涉及編輯每個守護程序 init.d 文件的解決方案。

編輯:另外,以 sudo 開頭的守護程序不進行核心轉儲。

為什麼不使用Appport?它在 Ubuntu 的非開發版本上預設禁用,但預設情況下仍會安裝 AFAIK。

/etc/profile當使用者登錄互動式會話時執行(即使那樣,這取決於登錄方法和登錄 shell)。它對啟動時啟動的守護程序沒有影響。

顯然(我尚未測試確認)核心轉儲在 Ubuntu 10.04 上開始禁用。可以通過在 中設置非零大小限制來啟用它們/etc/security/limits.conf。有關更多資訊,請參見該文件中的註釋和limits.conf手冊頁。我想你會想​​添加一行

*  soft  core  2000000

具有提升權限的程序通常不會轉儲核心(我不知道確切的規則)。這可能會影響通過特權提升直接啟動的程序,例如sudo foo;改為嘗試sudo sh -c foo(以便子程序以其最終特權級別開始)。

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