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"