Как вызвать мою программу, если происходит дамп ядра? - PullRequest
0 голосов
/ 07 сентября 2018

Я настроил 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 dir.

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

Есть идеи, почему моя программа не вызывается?

EDIT : я создал 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?

...