2017-03-17 29 views
0

我正在嘗試爲特定的pid生成coredump。 我試圖使用ulimit更改核心文件大小限制,但只會在/ proc/self/limits(這是針對shell)中更改。如何在linux中編輯/ proc/<pid>/limits文件?

那麼如何編輯特定的pid? Bascially我必須改變 「最大核心轉儲文件大小=無限」

注:

1)我們的Linux版本不具有prlimit。

2)即使下面的命令沒有幫助

 echo -n "Max core file size=unlimited:unlimited" > /proc/1/limits 

感謝,

回答

0

我總是這樣做與ulimit命令:

$ ulimit -c unlimited 

在我的Linux發行版(Ubuntu的16.04),核心文件留在此目錄中:

/var/lib/systemd/coredump/ 

如果你的發行版是基於systemd,你可以設置該目錄由該文件modifiying模式:

$ cat /proc/sys/kernel/core_pattern 
+0

但ulimit只改變了自我處理的限制,這是shell在我的情況。我想編輯PID 1. –

+0

爲什麼你需要PID 1?在shell上運行二進制文件時,該shell負責由其啓動的進程,因此您不應該修改init進程以轉儲核心文件。在執行之前,您應該修改啓動二進制文件的shell的ulimit。 – aicastell

+0

我想從Linux上運行的所有進程的PID爲1的父板上收集coredump。 –

0

請閱讀此信息:

$ man 5 core 

用的/ proc/sys目錄相關的檢查信息/內核/ core_pattern。

如前所述,您可以定義轉儲所有核心文件的目錄,使用「echo」命令修改此文件的內容。例如:

$ echo "/var/log/dumps/core.%e.%p" > /proc/sys/kernel/core_pattern 

這將轉儲上/var/log/dumps/core.%e.%p,其中%e是爲可執行文件名模式和%p模式的所有核心爲傾倒過程的PID 。

希望你可以玩這個來定製你自己的需求。