2010-10-14 81 views
2

我有一些不時崩潰的守護進程,我想知道如何啓用核心轉儲代。 我知道,默認情況下,在Linux上,ulimit的核心轉儲爲零,所以我需要將其設置爲無限制,如果我想查看正在運行的進程的核心轉儲。 但我想要做的是爲root帳戶下運行的守護進程生成核心轉儲。 任何人都可以告訴我如何配置系統?先謝謝你。如何在centos中爲守護進程生成核心轉儲?

回答

1

我相信是這樣的:

ulimit -c unlimited 

...還是有些價值,可以讓你創建這些轉儲。此外,您可能想要查看以下網頁的更多詳細信息:how to enable coreLinux FAQ

+0

其實我看着那個網站,但事情是從頁說我的機器上稍有區別,我無法得到它的工作。但是謝謝你的回覆。我會繼續嘗試,如果我能夠實現它,我會在這裏發佈它。再次感謝! – istudy0 2010-10-15 15:57:47

+2

上述鏈接很有幫助,但我找到了另一個鏈接 - http://www.bonsai.com/wiki/howtos/debugging/daemon_core/。這個鏈接對我更有用。 – istudy0 2011-03-29 15:59:50

+0

對於Debian Wheezy系統,事情看起來與RedHat特定的鏈接有點不同。我剛剛得到好的結果,重新啓動守護進程後:echo「ulimit -c unlimited」| sudo tee /lib/lsb/init-functions.d/core-limit – 2015-07-07 18:51:45

3

我知道,這是一個多年的問題,但它出現在我的谷歌搜索和接受的答案是不完整的至少對於Centos來說)。

對於RHEL衍生的系統,大多數的守護進程有一個init腳本源文件名爲:

/etc/sysconfig/{daemon_name} 

例如,Apache的是:

/etc/sysconfig/httpd 

這些文件中的環境變量是隻讀通過守護進程啓動時的init腳本,這些變量用於配置守護進程運行的環境。

要啓用核心轉儲,添加以下行:

export DAEMON_COREFILE_LIMIT='unlimited' 

重新啓動守護程序編輯這個文件之後。

您可能需要做的另一件事是更改內核核心轉儲文件名模板。默認情況下,核心轉儲將在當前工作目錄中生成並具有名稱'core'。這不是很有用,因爲它們會覆蓋另一個,並且在守護進程的情況下它的工作目錄可能是(a)未知的(b)不可寫的。要更改它:

sysctl -w kernel.core_pattern=/tmp/core_%e_%p 

該設置是我的建議,您可以更改所用目錄的路徑以及模式。上述模式將包含可執行文件名稱和pid。

更長久地設置,編輯文件/etc/sysctl.conf和插入:

kernel.core_pattern=/tmp/core_%e_%p 
相關問題