Назад | Перейти на главную страницу

Ведение журнала процессов Linux, которые завершаются из-за сигнала?

Давным-давно при запуске FreeBSD существовала функция по умолчанию, которая регистрировала, когда процесс получал один из фатальных сигналов, таких как SIGSEGV, SIGBUS, SIGKILL и т.д., и из-за этого был завершен.

Есть ли что-то подобное для Linux?

В auditd предложение правильное, но учтите, что оно работает, только если kill(2) syscall вызывается. SIGBUS, например, не вызывает этот системный вызов; это обработчик прерывания внутри ядра, который затем передает сигнал непосредственно соответствующему процессу без необходимости в интерфейсе системных вызовов.

Для идеального достижения цели вы, вероятно, ищете BPF. это отличный ресурс для начала игры. Предположительно - без явных или подразумеваемых гарантий - вы можете захотеть Вот.

Если вы ищете сигналы, отправляемые определенному процессу, strace может быть всем, что вам нужно:

# strace -e trace=signal -p <pid>

Много информации доступно на странице руководства strace ...

Также есть пакет «auditd».

Этот пост на redhat.com адресован вашему конкретному вопросу: https://access.redhat.com/solutions/36278

Резюмируя из сообщения redhat:

1) Установите auditd
2) Отредактируйте /etc/audit/audit.rules, включив в него строку:

-a entry,always -F arch=b64 -S kill -k teste_kill

3) перезапустить службу auditd (или остановить / запустить)

# service auditd restart

4) следите за файлом журнала auditd

# tail -f /var/log/audit/audit.log