Назад | Перейти на главную страницу

OSX как показать статус apache в терминале?

Я заметил, что на моем Linux-сервере, когда я набираю apachectl restart, он дает мне небольшие, но полезные отзывы, такие как restarting а потом [ok] или [fail] в конце строки. Немного, но по крайней мере я знаю, что происходит, и могу пойти проверить логи.

На моей OS X я ничего не получаю. сразу следующая строка:

sh-3.2# /usr/sbin/apachectl stop   
sh-3.2# /usr/sbin/apachectl start
sh-3.2# 

Как я могу включить эти функции «отладки»?

У меня такая же проблема на моем Mac. Когда я пытаюсь запустить apache и ничего не происходит, я немедленно запускаю эту команду. В моем случае проблема всегда заключается в файлах конфигурации apache.

apachectl configtest

apachectl на Mac это обертка вокруг некоторых launchctl команды (просто загляните в файл). К сожалению, launchctl не выходит с кодом ошибки, когда что-то идет не так с запуском httpd, поэтому у сценария нет простого способа отобразить что-либо, даже если он попытается это сделать.

Базовая проверка, которую вы можете выполнить самостоятельно, - это проверить наличие процессов Apache после apachectl start команда.

ps aux | grep httpd

Как насчет того, чтобы вставить в конец сценария-оболочки apachectl что-то вроде этого.

tail -5 /var/log/httpd/error_log

вы должны увидеть что-то подобное при обычном запуске

  • [Пт, 22 апреля, 23:39:20 2011] [уведомление] Дайджест: создание секрета для
    дайджест-аутентификация ...
  • [Пт, 22 апреля, 23:39:20 2011] [уведомление] Дайджест: готов
  • [Пт, 22 апреля, 23:39:20 2011] [предупредить] pid-файл
    /mlk/apache/pid/httpd.pid overwritten - Нечистое завершение предыдущего запуска Apache?
  • [Пт, 22 апреля, 23:39:20 2011] [уведомление] Apache / 2.0.63 (Unix) DAV / 2 настроен - возобновление нормальной работы

В противном случае здесь должна быть показана хотя бы часть ошибки. Ключевая фраза выделена выше.

Дополнительно: / usr / sbin / apachectl принадлежит пользователю root, для этого вы должны быть привилегированным пользователем. судо vi / usr / sbin / apachectl

переместитесь в конец файла и вставьте это между строками «esac» и «exit $ ERROR». т.е.

esac
sleep 2; tail -5 /var/log/httpd/error_log
exit $ERROR

Обратите внимание, что при этом будут распечатаны последние несколько строк независимо от того, какое действие вы предпримете со сценарием, остановите запуск, перезапустите. вы можете захотеть поместить его только в начальную часть оператора case.

В macOS с netstat команда отображает все сетевые подключения. Вы можете фильтровать только "прослушивающие" соединения и видеть http (s) серверы.

Вы можете создать файл bash с помощью этого кода:

status="$(netstat -at | grep LISTEN | grep *.http)"
count="$(echo "${status}" | grep -Ev "^$" | wc -l)"

if [ ${count} -eq 0 ] ; then
    echo " Apache server is not running"
fi   

echo "${status}" | 
while IFS= read -r line
do
    echo " ${line}"
done

Результат при остановке сервера sudo apachectl -k stop будет:

Apache server is not running

Результат при запущенном сервере sudo apachectl -k stop будет:

tcp46      0      0  *.https                *.*                    LISTEN     
tcp46      0      0  *.http                 *.*                    LISTEN     

В этом примере у меня работает два сервера, один с https, а другой с http.