Найти время безотказной работы apache2

Как я могу найти время работы Apache2. Есть множество предложений, чтобы использовать

httpd fullstatus

Но это не удается

-bash: httpd: command not found

Там не работает команда httpd в top либо просто процесс apache2.

Я тоже попробовал (без везения)

httpd status
apache2 status
apache2 fullstatus
/usr/sbin/apache2 fullstatus
/usr/sbin/apache2 status

Какую команду я могу использовать, чтобы надежно определить время безотказной работы apache2, учитывая различия в том, как Apache установлен / настроен на различных платформах?

3 ответа

Решение

Ты можешь использовать ps -eo comm,etime например:

$ ps -eo comm,etime | grep httpd
httpd            5-01:40:22

Это показывает прошедшее время с момента запуска процесса. Мой показывает 5 дней, 1 час, 40 минут, 22 секунды.

И после перезагрузки:

$ ps -eo comm,etime | grep httpd
httpd                 00:07

При изящном перезапуске, если процесс apache все еще обслуживает соединение, он не будет прерван, пока не завершится, поэтому, если это большая загрузка на медленный хост, он может задержаться на некоторое время, пока не завершится.

Я вырезал большую часть вывода, так как он показывает каждый разветвленный процесс, но у вас будет общий обзор того, как долго он выполняется.

Я подозреваю, что есть много специфичных для apache-версии способов сделать это, но один общепринятый (и немного грубый) способ заключается в следующем.

Найдите PID процесса, у которого открыт порт; это будет первый начатый:

[root@lory ~]# netstat -apn|grep -w 80|grep LISTEN
tcp        0      0 :::80                       :::*                        LISTEN      2903/httpd          

netstat команда требует привилегий, поэтому запускайте с правами root или sudo, В этом случае PID - 2903. Затем выясните, как долго этот процесс выполняется:

[root@lory ~]# ps auxww|grep 2903|grep -v grep
apache    2903  0.0  1.0 413316 39972 ?        S    Oct23   0:42 /usr/sbin/httpd

В данном случае время запуска 23 октября, поэтому я бегал пару дней. Вы можете получить поле, например 11:15, в этом случае сегодня время суток, поэтому вы знаете, что перезапуск сработал.

Если у вас установлен mod_status, вы сможете определить время безотказной работы с помощью:

apachectl status

Который покажет текущее время, а также время последнего перезапуска. Возможно, это зависит от версии / dstro, но на моих серверах debian также отображается "Время работы сервера".

Другие вопросы по тегам