如何在linux中编辑/ proc / <pid> / limits文件?

时间:2017-03-17 07:18:46

标签: linux process linux-kernel coredump

我正在尝试为特定的pid生成coredump。 我尝试使用ulimit更改核心文件大小限制,但它只会在/ proc / self / limits(适用于shell)中更改。

那么我如何编辑特定的pid呢?   基本上我必须改变“最大核心文件大小=无限制”

注意:

1)我们的linux版本没有prlimit。

2)即使是下面的命令也没有帮助

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

谢谢,

3 个答案:

答案 0 :(得分:1)

限制

如果要修改core_file限制,可以输入

prlimit --pid ${pid} --core=soft_limit:hard_limit

prlimit的帮助页面是:

Usage:
 prlimit [options] [-p PID]
 prlimit [options] COMMAND

General Options:
 -p, --pid <pid>        process id
 -o, --output <list>    define which output columns to use
     --noheadings       don't print headings
     --raw              use the raw output format
     --verbose          verbose output
 -h, --help             display this help and exit
 -V, --version          output version information and exit

Resources Options:
 -c, --core             maximum size of core files created
 -d, --data             maximum size of a process's data segment
 -e, --nice             maximum nice priority allowed to raise
 -f, --fsize            maximum size of files written by the process
 -i, --sigpending       maximum number of pending signals
 -l, --memlock          maximum size a process may lock into memory
 -m, --rss              maximum resident set size
 -n, --nofile           maximum number of open files
 -q, --msgqueue         maximum bytes in POSIX message queues
 -r, --rtprio           maximum real-time scheduling priority
 -s, --stack            maximum stack size
 -t, --cpu              maximum amount of CPU time in seconds
 -u, --nproc            maximum number of user processes
 -v, --as               size of virtual memory
 -x, --locks            maximum number of file locks
 -y, --rttime           CPU time in microseconds a process scheduled
                        under real-time scheduling

Available columns (for --output):
 DESCRIPTION  resource description
    RESOURCE  resource name
        SOFT  soft limit
        HARD  hard limit (ceiling)
       UNITS  units

For more details see prlimit(1).

答案 1 :(得分:0)

我总是使用ulimit命令执行此操作:

$ ulimit -c unlimited

在我的Linux发行版(ubuntu 16.04)上,核心文件保留在此目录中:

/var/lib/systemd/coredump/

如果您的发行版基于systemd,您可以通过修改此文件上的模式来设置此目录:

$ cat /proc/sys/kernel/core_pattern

答案 2 :(得分:0)

请阅读此信息:

$ man 5 core

检查与/ proc / sys / kernel / core_pattern相关的信息。

如前所述,您可以定义转储所有核心文件的目录,使用&#34; echo&#34;修改此文件的内容。命令。例如:

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

这将转储/var/log/dumps/core.%e.%p上的所有核心,其中%e是可执行文件名的模式,而%p模式是转储进程的pid。

希望您可以使用它来定制自己的需求。