Мое приложение требует, чтобы основной файл был сгенерирован по определенному шаблону.
Как это сделать, не затрагивая другие процессы?
И как мне это сделать, когда /proc доступен только для чтения?
Мое приложение требует, чтобы основной файл был сгенерирован по определенному шаблону.
Как это сделать, не затрагивая другие процессы?
И как мне это сделать, когда /proc доступен только для чтения?
man core
говорит нам:
Передача дампов ядра в программу
Начиная с ядра 2.6.19, Linux поддерживает альтернативный синтаксис для файла
/proc/sys/kernel/core_pattern
. Если первым символом этого файла является символ вертикальной черты (|
), то оставшаяся часть строки интерпретируется как программа, которую нужно выполнить. Вместо записи в файл на диске дамп памяти предоставляется программе в качестве стандартного ввода.Обратите внимание на следующие моменты:
Программа должна быть указана с использованием абсолютного пути (или пути относительно корневого каталога, /) и должна сразу следовать за символом '|' персонаж.
Процесс, созданный для запуска программы, запускается от имени пользователя и группы root.
Аргументы командной строки могут быть переданы программе (начиная с Linux 2.6.24), разделенные пробелом (до общей длины строки 128 байт).
Аргументы командной строки могут включать любой из спецификаторов %, перечисленных выше. Например, чтобы передать PID процесса, для которого создается дамп, укажите %p в качестве аргумента.
Вы можете поместить туда скрипт, например, например.
| /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)
Теперь все, что вам нужно сделать, это «сделать что-то по умолчанию» для процессов, отличных от ваших собственных.
ps
для поиска родительского процесса/группы процессов). 2. То же самое для списка приложений (простой сценарий bash будет использовать case...esac
с шаблонами глобусов) 3. Нет. Сценарий (очевидно) будет запускаться с правами root. Вы можете отказаться от привилегий (например, sudo -u otheruser)
- person sehe; 08.06.2015