LINUX.ORG.RU
ФорумAdmin

Как можно понять, почему падает процесс?

 , ,


0

1

Хочется сделать что-нибудь типа strace, но для отладки демонов его использовать нельзя - он форкается и убегает из консоли.

Попробовал сделать так:

inotifywatch /proc

и повключать/повыключать sshd - inotifywatch не срабатывает.

Вопросы:

1. почему не срабатывает inotifywatch?

2. как ещё можно спалить, кто убивает процесс?

★★★

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

strace ... для отладки демонов его использовать нельзя

4.2, man strace

anonymous
()

strace, но для отладки демонов его использовать нельзя - он форкается и убегает из консоли.

strace -p не подходит? Или gdb progname pid.

tailgunner ★★★★★
()

Хочется сделать что-нибудь типа strace, но для отладки демонов его использовать нельзя - он форкается и убегает из консоли.

Ну, во-первых, у нормальных демонов бывает обычно опция, которая заставляет их не форкаться. Во-вторых, strace с опцией -f трейсит порождаемые форки.

А демон лога не пишет?

А inotifywatch на /proc, ЕМНИП, не работает в принципе, из-за особенностей реализации inotify в ядре.

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

А inotifywatch на /proc, ЕМНИП, не работает в принципе, из-за особенностей реализации inotify в ядре.

вот как-то так мне и показалось, что это против правил. Но вдруг бы сработало.

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

демон - это sshd, vsftpd, syslogd и klogd, которые иногда впадают в состояние, диагностируемое /etc/init.d/<daemon init script name> как <daemon> dead but pidfile exists.

Судя по тому, как под strace себя ведут демоны, завершаемые штатным способом, нормальный демон должен как минимум убить свой пид.

Пустил strace на три демона - ssh, syslogd, klogd. Посмотрим, что будет.

Кстати, в конце жизни демона под strace видно вызов

unlink "/var/run/sshd.pid"

unlink - это что в данном случае?

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

На основные вопросы вам, вроде, уже ответили. Добавлю, что у strace есть опция ″-e″, позволяющая задать интерисующие системные вызовы, чтобы в файл с трассировкой не сыпалось лишнего.

Но, если у вас демон получает SIGKILL от какого-нибудь скрипта, то strace даже PID откуда пришёл этот сигнал не покажет. Может вам поможет auditd: https://access.redhat.com/site/solutions/36278

mky ★★★★★
()

1. почему не срабатывает inotifywatch?

Потому что нужно прочитать мануал.

Что по-вашему должно сработать если

-t <seconds>, --timeout <seconds>  Listen only for the specified amount of seconds.  If not specified, inotifywatch will gather statistics until receiving an interrupt signal by (for example) pressing CONTROL-C at the console.
Напишите inotifywatch -r -t10 /proc или пользуйтесь inotifywait

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

Что он должен сработать один раз, я понимаю, потому что уже читал ман. Проблема в том, что он не сработал ни одного раза.

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

Что значит не срабатывает? inotifywatch показывает статистику нотификейшнов за период. Не срабатывает - это не показывает статистику или просто статистика не такая как вы ожидаете? «один раз» срабатывает inotifywait насколько я помню.

ventilator ★★★
()
Последнее исправление: ventilator (всего исправлений: 1)
Ответ на: комментарий от ventilator

Да, я дурак. Это wait срабатывал один раз и выходил, а watch висит и слушает.

inotifywait на /proc/`pidof sshd` не показывает ничего, когда делают sshd stop. Это тоже странно, но тут уж лучше auditd, как уже подсказали. Завтра буду играться..

Так неудобно - надо отлаживать работу сервера, а у него sshd падает. Ну фиг бы с ним, будь это что-нибудь другое, а тут доступ-то по сети не поимеешь!

pianolender ★★★
() автор топика
Последнее исправление: pianolender (всего исправлений: 1)
Ответ на: комментарий от pianolender

Всего через 16 сообщений стало понятно что проблема - падения ssh. dmesg на предмет сегфолтов и логи, как я понимаю вы не смотрели?

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