如果发生核心转储,如何调用我的程序?

时间:2018-09-07 19:43:33

标签: linux coredump

我已经这样配置了core_pattern:

$ cat /proc/sys/kernel/core_pattern
|/var/core_interceptor/bin/core_handler_program.sh

如果我通过kill -4 <PID>杀死进程来生成内核:

$ cat crash.sh 
#!/bin/sh

while true
do
   echo "PID is $$"
   sleep 100000
done

$ ./crash.sh 
PID is 92658
Illegal instruction (core dumped)

$ cat core_handler_program.sh 
echo "this program will handle core dump"
#!/bin/bash
#touch "/var/lib/systemd/coredump/core.happened.$(date +%T)"
touch "/var/core_interceptor/bin/core.happened.$(date +%T)"

我的程序没有被调用,因为在core.happened目录中没有看到/var/core_interceptor/bin文件。

ls -lrt core*
-rwxr-xr-x. 1 root root 176 Sep  7 19:38 core_handler_program.sh

知道为什么我的程序没有被调用吗?

编辑:我创建了一个c program,并在core_pattern中进行了配置,该二进制文件正在被调用。它会成功生成text.text文件。

$ cat hello.c
#include <stdio.h>
#define FILE_NAME "/var/core_interceptor/bin/text.txt"
int main()
{
   // printf() displays the string inside quotation
   printf("Hello, World!");
   FILE* file_ptr = fopen(FILE_NAME, "w");
   fclose(file_ptr);
   return 0;
}

是否只有二进制文件可以配置?还是也可以调用shell script

0 个答案:

没有答案