简体   繁体   中英

How to edit /proc/<pid>/limits file in linux?

I am trying to generate coredump for a particular pid. I tried to change the core file size limit using ulimit, but it will change only in /proc/self/limits ( which is for shell).

So how do i edit it for particular pid? Bascially i have to change "Max core file size=unlimited"

Note:

1)Our linux version dont have prlimit.

2)Even the below command didnt help

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

Thanks,

prlimit

if you want to modify core_file limit, you can type

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

the help page of prlimit is :

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).

I always do this with ulimit command:

$ ulimit -c unlimited

On my Linux distro (ubuntu 16.04), core files are left on this directory:

/var/lib/systemd/coredump/

If your distro is based on systemd, you can setup this directory by modifiying pattern on this file:

$ cat /proc/sys/kernel/core_pattern

Please, read this info:

$ man 5 core

Check information related with /proc/sys/kernel/core_pattern.

As suggested previously, you can define the directory where all your core files are dumped, modifying the content of this file with "echo" command. For example:

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

This will dump all cores on /var/log/dumps/core.%e.%p, where %e is pattern for the executable filename, and %p pattern for pid of dumped process.

Hopefully you can play with this to customize your own needs.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM