2017-03-17 33 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 。

希望你可以玩这个来定制你自己的需求。