Мониторинг состояния процесса httpd
Добавлено: 2008-10-01 5:25:04
Добрый день.
Друзья, передо мной появилась такая задача, прошу помочь разобраться в ее решении.
Постановка: требуется на языке Си реализовать работу двух следующих функций (рассматриваемая ОС - FreeBSD):
1) Функция f1 принимает в качестве своего аргумента название процесса (давайте попробуем рассмотреть на примере httpd).
Функция должна определить запущен ли процесс с таким именем, а если процесс по каким либо причинам не запущен - стартовать его (команды start/stop допустим определены в конфиг файле программы и нашей функции известны).
Комментарии:
В самом простейшем случае работу функции представляю себе такой:
а) Получаем название процесса.
б) Смотрим есть ли его отображение в /var/run/.
в) Если есть, все ок, если нет - запускаем.
Мне остается непонятным, что будет, если скажем установлено два сервера Apache, или процесс не хранит свое отображение в /var/run/.
То есть желательно определить способ, схожий по принципу работы с тем, как происходит получение информации о пользователи системы, файлах (заполняются информацией поля элемента определенной структуры).
2) Функция f2 должна проверить, есть доступ (возвращается ли содержимое страницы?) по http по 80 порту (определить, таким образом, корректно ли функционирует Apache). И если нет, то перезагрузить его. Команды, опять же, известны.
Комментарии:
Здесь к сожалению ничего кроме как телнетом по 80 порту ничего в голову не приходит.
В результате, получится примитивный аналог программы monit для одного процесса.
Очень прошу помочь советами. Заранее благодарен.
Друзья, передо мной появилась такая задача, прошу помочь разобраться в ее решении.
Постановка: требуется на языке Си реализовать работу двух следующих функций (рассматриваемая ОС - FreeBSD):
1) Функция f1 принимает в качестве своего аргумента название процесса (давайте попробуем рассмотреть на примере httpd).
Функция должна определить запущен ли процесс с таким именем, а если процесс по каким либо причинам не запущен - стартовать его (команды start/stop допустим определены в конфиг файле программы и нашей функции известны).
Комментарии:
В самом простейшем случае работу функции представляю себе такой:
а) Получаем название процесса.
б) Смотрим есть ли его отображение в /var/run/.
в) Если есть, все ок, если нет - запускаем.
Мне остается непонятным, что будет, если скажем установлено два сервера Apache, или процесс не хранит свое отображение в /var/run/.
То есть желательно определить способ, схожий по принципу работы с тем, как происходит получение информации о пользователи системы, файлах (заполняются информацией поля элемента определенной структуры).
2) Функция f2 должна проверить, есть доступ (возвращается ли содержимое страницы?) по http по 80 порту (определить, таким образом, корректно ли функционирует Apache). И если нет, то перезагрузить его. Команды, опять же, известны.
Комментарии:
Здесь к сожалению ничего кроме как телнетом по 80 порту ничего в голову не приходит.
В результате, получится примитивный аналог программы monit для одного процесса.
Очень прошу помочь советами. Заранее благодарен.