如何仅为特定应用程序更改核心模式?
How to change core pattern only for a particular application?
我的应用程序需要以特定模式生成核心文件。
如何在不影响其他进程的情况下执行此操作?
当 /proc 为只读时,我该如何执行此操作?
man core
告诉我们:
Piping core dumps to a program
Since kernel 2.6.19, Linux supports an alternate syntax for the
/proc/sys/kernel/core_pattern
file. If the first character of this
file is a pipe symbol (|
), then the remainder of the line is
interpreted as a program to be executed. Instead of being written to
a disk file, the core dump is given as standard input to the program.
Note the following points:
The program must be specified using an absolute pathname (or a
pathname relative to the root directory, /), and must immediately
follow the '|' character.
The process created to run the program runs as user and group
root.
Command-line arguments can be supplied to the program (since Linux
2.6.24), delimited by white space (up to a total line length of
128 bytes).
The command-line arguments can include any of the % specifiers
listed above. For example, to pass the PID of the process that is
being dumped, specify %p in an argument.
你可以在那里放一个脚本,例如
| /path/to/myscript %p %s %c
您可以检测哪个进程正在触发核心转储:(man core
):
%% a single % character
%p PID of dumped process
%u (numeric) real UID of dumped process
%g (numeric) real GID of dumped process
%s number of signal causing dump
%t time of dump, expressed as seconds since the Epoch, 1970-01-01
00:00:00 +0000 (UTC)
%h hostname (same as nodename returned by uname(2))
%e executable filename (without path prefix)
%E pathname of executable, with slashes ('/') replaced by exclama‐
tion marks ('!').
%c core file size soft resource limit of crashing process (since
Linux 2.6.24)
现在您所要做的就是 "do the default thing" 除了您自己的进程
我的应用程序需要以特定模式生成核心文件。
如何在不影响其他进程的情况下执行此操作?
当 /proc 为只读时,我该如何执行此操作?
man core
告诉我们:
Piping core dumps to a program
Since kernel 2.6.19, Linux supports an alternate syntax for the
/proc/sys/kernel/core_pattern
file. If the first character of this file is a pipe symbol (|
), then the remainder of the line is interpreted as a program to be executed. Instead of being written to a disk file, the core dump is given as standard input to the program.Note the following points:
The program must be specified using an absolute pathname (or a pathname relative to the root directory, /), and must immediately follow the '|' character.
The process created to run the program runs as user and group root.
Command-line arguments can be supplied to the program (since Linux 2.6.24), delimited by white space (up to a total line length of 128 bytes).
The command-line arguments can include any of the % specifiers listed above. For example, to pass the PID of the process that is being dumped, specify %p in an argument.
你可以在那里放一个脚本,例如
| /path/to/myscript %p %s %c
您可以检测哪个进程正在触发核心转储:(man core
):
%% a single % character
%p PID of dumped process
%u (numeric) real UID of dumped process
%g (numeric) real GID of dumped process
%s number of signal causing dump
%t time of dump, expressed as seconds since the Epoch, 1970-01-01
00:00:00 +0000 (UTC)
%h hostname (same as nodename returned by uname(2))
%e executable filename (without path prefix)
%E pathname of executable, with slashes ('/') replaced by exclama‐
tion marks ('!').
%c core file size soft resource limit of crashing process (since
Linux 2.6.24)
现在您所要做的就是 "do the default thing" 除了您自己的进程