2012-07-19 67 views
1

我正在測試應用程序,當應用程序消耗大部分可用內存時,內核會殺死我的進程。但是我希望這個過程死掉,核心文件也會生成,對於調查提出的建議。我正在使用redhat 5.4如何防止linux殺死我的進程並生成核心文件

有沒有辦法做到這一點?

+0

我已經設置了ulimit -c unlimited – tune 2012-07-19 07:32:59

回答

1

從您的「大部分可用內存」描述中,我假設您的系統內存不足,並且內存不足處理器會導致您的進程中斷。它被SIGTERM殺死,所以你在正常情況下不會得到核心轉儲。

您可能通過在程序中處理SIGTERM並在信號處理程序中發送進程SIGSEGV來獲得核心轉儲,從而觸發核心轉儲。 OTOH在內存不足的情況下,可能會導致許多額外的進程死亡,這些進程也被OOM處理程序殺死。

0

許多信號的默認操作是核心轉儲。如果程序不覆蓋Linux默認信號處理程序,如果設置了正確的ulimit,則可以使用SIGQUIT導致核心轉儲。

SIGQUIT可以kill -SIGQUIT (process_id)或發送,如果程序與鍵盤相關聯,通過鍵入按Ctrl - \

0

你應該找哪些信號你的程序將獲得當OOM發生。 然後用信號功能設置處理程序