http://www.centos.org/docs/5/html/5.3/Release_Notes/sect-Release_Notes-Kernel_Related_Updates.html
https://bugzilla.redhat.com/show_bug.cgi?id=564237
以下、簡単な使い方として、core を圧縮して /var/spool/ap_cores ディレクトリへ集約する方法の紹介です。
#!/bin/bash
#
# Name: gzip_core
#
# Setup: run sysctl -w kernel.core_pattern="|/path/to/this %t %u %g %e %p %s"
# or add to /etc/sysctl.conf
declare -a CORE_INF=($*)
CORE_TIM=${CORE_INF[0]}
CORE_UID=${CORE_INF[1]}
CORE_GID=${CORE_INF[2]}
CORE_EXE=${CORE_INF[3]}
CORE_PID=${CORE_INF[4]}
CORE_SIG=${CORE_INF[5]}
OUTDIR=/var/spool/ap_cores
[ ! -d $OUTDIR ] && mkdir -p $OUTDIR
chmod 700 $OUTDIR
umask 077
CORE_FILE_NAME=core-$CORE_TIM-$CORE_UID-$CORE_GID-$CORE_EXE-$CORE_PID-$CORE_SIG.gz
/usr/bin/gzip -c > $OUTDIR/$CORE_FILE_NAME
これを、例えば /root/gzip_core に保存して実行権を与えて、次のように sysctl.conf に設定します。
kernel.core_pattern="|/root/gzip_core %t %u %g %e %p %s"core が生成されれば、/var/spool/ap_cores の下に core が gzip 圧縮されて収集されます。
# ls -la /var/spool/ap_cores/ total 28 drwx------ 2 root root 4096 Jun 26 19:49 . drwxr-xr-x 17 root root 4096 Jun 26 19:26 .. -rw------- 1 root root 13152 Jun 26 19:49 core-1309085370-0-0-a.out-7537-11.gz
対応するカーネルソースは、次のとおりです。kernel-2.6.18-128.el5 の場合。
1446 /* format_corename will inspect the pattern parameter, and output a
1447 * name into corename, which must have space for at least
1448 * CORENAME_MAX_SIZE bytes plus one byte for the zero terminator.
1449 */
1450 static int format_corename(char *corename, const char *pattern, long signr)
1451 {
1452 const char *pat_ptr = pattern;
1453 char *out_ptr = corename;
1454 char *const out_end = corename + CORENAME_MAX_SIZE;
1455 int rc;
1456 int pid_in_pattern = 0;
1457 int ispipe = 0;
1458
1459 if (*pattern == '|')
1460 ispipe = 1;
1461
"fs/exec.c"
