Мониторинг состояния процесса httpd

Модератор: Fastman

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
SergeyJ2
рядовой
Сообщения: 28
Зарегистрирован: 2008-08-11 14:21:18

Мониторинг состояния процесса httpd

Непрочитанное сообщение SergeyJ2 » 2008-10-01 5:25:04

Добрый день.
Друзья, передо мной появилась такая задача, прошу помочь разобраться в ее решении.
Постановка: требуется на языке Си реализовать работу двух следующих функций (рассматриваемая ОС - FreeBSD):
1) Функция f1 принимает в качестве своего аргумента название процесса (давайте попробуем рассмотреть на примере httpd).
Функция должна определить запущен ли процесс с таким именем, а если процесс по каким либо причинам не запущен - стартовать его (команды start/stop допустим определены в конфиг файле программы и нашей функции известны).

Комментарии:
В самом простейшем случае работу функции представляю себе такой:
а) Получаем название процесса.
б) Смотрим есть ли его отображение в /var/run/.
в) Если есть, все ок, если нет - запускаем.
Мне остается непонятным, что будет, если скажем установлено два сервера Apache, или процесс не хранит свое отображение в /var/run/.
То есть желательно определить способ, схожий по принципу работы с тем, как происходит получение информации о пользователи системы, файлах (заполняются информацией поля элемента определенной структуры).

2) Функция f2 должна проверить, есть доступ (возвращается ли содержимое страницы?) по http по 80 порту (определить, таким образом, корректно ли функционирует Apache). И если нет, то перезагрузить его. Команды, опять же, известны.

Комментарии:
Здесь к сожалению ничего кроме как телнетом по 80 порту ничего в голову не приходит. :(


В результате, получится примитивный аналог программы monit для одного процесса.
Очень прошу помочь советами. Заранее благодарен.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Мониторинг состояния процесса httpd

Непрочитанное сообщение zg » 2008-10-01 6:57:50

вопросы:
1. если этот скрипт заточен под апач, то почему не впоспользоваться apachectl?
2. если нужен процесс апача, то почему не прочитать конфиг апача на тему файла pid?
3. зачем это делать на С, когда есть pgrep?
4. зачем куда-то заходить если достаточно проверь свбоден ли 80 порт?
5. зачем использовать телнет, когда можно сделать тоже самое на С?
6. зачем вообще нужен С, если вы его не знаете?

SergeyJ2
рядовой
Сообщения: 28
Зарегистрирован: 2008-08-11 14:21:18

Re: Мониторинг состояния процесса httpd

Непрочитанное сообщение SergeyJ2 » 2008-10-01 8:02:38

zg писал(а):вопросы:
1. если этот скрипт заточен под апач, то почему не впоспользоваться apachectl?
2. если нужен процесс апача, то почему не прочитать конфиг апача на тему файла pid?
3. зачем это делать на С, когда есть pgrep?
4. зачем куда-то заходить если достаточно проверь свбоден ли 80 порт?
5. зачем использовать телнет, когда можно сделать тоже самое на С?
6. зачем вообще нужен С, если вы его не знаете?
4. На тот случай, если потребуется проверить удаленный сервер (задача первой функции к этому не относится)
5. А как это можно сделать?

kmb
лейтенант
Сообщения: 680
Зарегистрирован: 2007-02-20 8:30:03
Контактная информация:

Re: Мониторинг состояния процесса httpd

Непрочитанное сообщение kmb » 2008-10-01 9:23:44

Был же порт, который отслеживает запущен процесс или нет и позволяет стартовать его...
truth is out there...

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Мониторинг состояния процесса httpd

Непрочитанное сообщение zg » 2008-10-01 9:30:07

SergeyJ2 писал(а):5. А как это можно сделать?

Код: Выделить всё

# man 2 connect
CONNECT(2)                FreeBSD System Calls Manual               CONNECT(2)

NAME
     connect -- initiate a connection on a socket

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <sys/types.h>
     #include <sys/socket.h>

     int
     connect(int s, const struct sockaddr *name, socklen_t namelen);

SergeyJ2
рядовой
Сообщения: 28
Зарегистрирован: 2008-08-11 14:21:18

Re: Мониторинг состояния процесса httpd

Непрочитанное сообщение SergeyJ2 » 2008-10-01 11:12:40

zg писал(а):
SergeyJ2 писал(а):5. А как это можно сделать?

Код: Выделить всё

# man 2 connect
CONNECT(2)                FreeBSD System Calls Manual               CONNECT(2)

NAME
     connect -- initiate a connection on a socket

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <sys/types.h>
     #include <sys/socket.h>

     int
     connect(int s, const struct sockaddr *name, socklen_t namelen);
Да, со второй функцией как раз с помощью сокетов разобрался. Работает.