LINUX.ORG.RU
ФорумAdmin

Перехватить kill -9 между процессами

 


0

1

Какая-то гадость убивает процесс вебсервера.

Скорей всего, один из скриптов мониторинга решил, что сервак повис, и теперь упорно рестарит его.

Как бы понять, кто именно убивает приложение? Допустим, у меня есть его pid и полный путь на hdd. Я хочу получить pid/путь до зверя, шлющего kill.

И желательно не просто понять кто это, а перехватить и отменить этот килл к чертям. (шанс что «убивающий» скрипт можно будет поправить - черезвычайно низок, разработчики скрипта будут в ярости, да и скорей всего этот «скрипт» на самом деле бинарь на c++ без исходников. Поэтому проще просто изолировать буйного от приличного общества)

★★★★☆

Шаредхостинг? :) А не проще ли в pid файл писать НЕ верный pid, от балды. lol. Чтобы апач стартовал и врал по какому пиду он сидит he-he.

menangen ★★★★★
()
Ответ на: комментарий от anonymous

но мы же не думаем, что уважаемый тс — полный дебил

а зря! он тут примерно каждую неделю подобный бред спрашивает

anonymous
()
Ответ на: комментарий от anonymous

Ну ладно, тогда так:

# /etc/init.d/auditd start
 * Starting auditd ...                          

# auditctl -a exit,always -S kill

$ killall -9 mc

# grep kill /var/log/audit/audit.log
type=SYSCALL msg=audit(1427720434.127:30): arch=40000003 syscall=37 success=yes exit=0 a0=672e a1=9 a2=672e a3=0 items=0 ppid=6962 pid=26422 auid=5000 uid=5000 gid=5000 euid=5000 suid=5000 fsuid=5000 egid=5000 sgid=5000 fsgid=5000 tty=pts7 ses=1 comm="killall" exe="/usr/bin/killall" key=(null)

Lavos ★★★★★
()
Последнее исправление: Lavos (всего исправлений: 1)

Мну тебя огорчит, SIGKILL принципиально невозможно перехватить. Узнать же, от куда он пришёл, тоже не совсем тривиально.

beastie ★★★★★
()
Ответ на: комментарий от anonymous

но мы же не думаем, что уважаемый тс — полный дебил и не смотрел в логи?

Разве есть основания этот вариант не рассматривать? :D

Manhunt ★★★★★
()

auditd

upd. А, выше уже сказали.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от post-factum

Обработчик — это и есть «перехватить». Собственно это и имелось в виду. А вот, как узнать, кто послал — это уже другая история.

beastie ★★★★★
()
Ответ на: комментарий от beastie

Вот если именно перехватить, то kprobes в подгружаемом модуле (или что там для подмены сисколлов на уровне ядра).

post-factum ★★★★★
()
Ответ на: комментарий от anonymous

ТЗ в таком представлении не имеет смысла, т.к. по спецификации:

«processes can ignore, block, or catch all signals except SIGSTOP and SIGKILL»

Нет, можно конечно наваять свой модуль ядра и всё такое прочее, но это уже другое ТЗ. Штатными средствами — никак.

beastie ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.