Я пытаюсь найти способ получить уведомление, когда один из моих процессов снова запускается (я пытался отслеживать файл proc, но не смог, monit не обрабатывает получение одного и того же pid и запускается периодически). Любые идеи?
может что-то совсем другое. Простая обертка.
напишите сценарий bash вместо исходного двоичного файла
#!/bin/bash
# put here commands to notify You
# optional commands to redirect fd to original processs if needed
exec /path/to/original/binary
В ваших вопросах не так много подробностей о том, чего именно вы ожидаете, но это сработает.
По моему мнению, твоя первая идея об использовании Monit было лучшим подходом и он более надежен.
Я пробовал контролировать файл proc, но безуспешно
Расскажите, где вы застряли, мы можем помочь. Monit в полной мере на это способен. Может у вас где-то неправильно настроен Монит.
monit не справляется с получением того же pid
Верно, но не стоит об этом беспокоиться. Как системы Linux управляют процессами, вы никогда не получите тот же PID, что и предыдущий.
и (Monit) запускается периодически
Правильно. Monit имеет интервал опроса по умолчанию 120 секунд. Если этот уровень вам не подходит, вы можете уменьшить интервал опроса, изменив значение set daemon n (where n is a number in seconds - default 120)
параметр в файле конфигурации.
Вы можете получать уведомления о событиях ядра, связанных с процессами, через Netlink. Посмотреть здесь например код.
вы можете написать программу, которая получает список процессов, анализирует этот список и обнаруживает новые процессы. затем добавьте «датчик значения http xml» в свое программное обеспечение для мониторинга (кактусы, ...) и проверьте результаты своей программы.
http://www.cyberciti.biz/faq/show-all-running-processes-in-linux/