Linux
在 Ubuntu 上由 init.d 啟動時沒有守護程序的核心轉儲
如何在 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
(以便子程序以其最終特權級別開始)。