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


11

Я помітив, що на моєму сервері Linux, коли я ввожу apachectl перезапуск, він дає мені мало, але корисні відгуки, такі як, restartingа потім [ok]і [fail]в кінці рядка. Не багато, але принаймні я знаю, що відбувається, і можу зайти перевірити журнали.

На моїй ОС X я нічого не отримую. відразу наступний рядок:

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

Як я можу ввімкнути ці функції налагодження?


Я не знайомий з OS X, але ви можете відредагувати сценарій init, щоб додати echoрядок.
кванта

де цей сценарій? і до якого рядка слід додати echo? Вибачте, я новачок навколо і потребую деталей: \
mgPePe

Я не хлопець OS X, але, можливо, він просто слідує філософії Unix "жодна новина - це не хороша новина", і починає кидати вас тільки в тому випадку, якщо щось не так?
Janne Pikkarainen

хм тихі помилки не допомагають, тому я насправді не шанувальник
mgPePe

Опублікуйте вміст /usr/sbin/apachectl.
кванта

Відповіді:


5

Як щодо сценарію обгортки 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 перезаписано - Нечисте відключення попереднього запуску Apache?
  • [Пт 22 квітня 23:39:20 2011] [повідомлення] Apache / 2.0.63 (Unix) налаштований DAV / 2 - відновлення нормальних операцій

Інакше будь-яка помилка повинна бути хоча б частково показана тут. Ключова фраза вказується вище.

Додатково: / usr / sbin / apachectl належить root, ви повинні бути привілейованим користувачем для цього. sudo vi / usr / sbin / apachectl

переходимо до кінця файлу та вставляємо це між рядками «esac» та «exit $ ERROR». тобто.

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

Зверніть увагу, що це надрукує останні кілька рядків незалежно від того, які дії ви зробите зі сценарієм, зупиніть запуск, перезапустіть. ви можете лише поставити його в початковій частині заяви справи.


Це звучить як можливе рішення. І як я можу його прикріпити, щоб він автоматично виконувався з кожною командою перезавантаження?
mgPePe

Довелося ввійти до мого сервера macos вдома, щоб подивитися / usr / bin / apachectl. Подивіться у відповідь вище, я додав команди для редагування файлу.
Майкл Генрі

30

У мене така ж проблема у мого mac. Коли я коли-небудь намагаюся запустити апаш, і нічого не відбувається, я негайно запускаю цю команду. У моєму випадку проблема, як видається, завжди полягає у файлах конфігурації apache.

apachectl configtest

Дякую за це Я сам зіткнувся з цією проблемою, і виявляється, що оновлення до домашньої мови SQLite викликало PHP домівки, що викликало помилку Apache, яка не з’явилася ніде, крім у configtest.
AlexMax

Дякую дякую дякую !!! Це щойно врятувало мою розумність !!!
І нарешті,

1
коротка версія цієї командиapachectl -t
еквіман

Ця команда підкаже, чи конфігурація Apache httpd (httpd.conf) не містить синтаксичних помилок. Щоб побачити, чи працює процес, ви можете запустити "htop", а потім F4 для фільтрації на "httpd", щоб побачити всі процеси, породжені httpd.
Пунет Ламба

8

apachectlна Mac - обгортка навколо деяких launchctlкоманд (просто подивіться у файл). На жаль, startctl не виходить з кодом помилки, коли з початком щось піде не httpdтак, тому сценарій не має простого способу нічого відобразити, навіть якщо це намагається.

Основна перевірка, яку ви можете виконати самостійно, - це перевірити наявність процесів Apache після apachectl startкоманди.

ps aux | grep httpd

певним чином, ви говорите: "Немає такої інформації про налагодження, яку можна встановити на macosx, але саме так ви можете перевірити, чи працює сервер apache", це правильно?
mgPePe

Так, саме про це.
Sven

0

На macOS з netstatкомандою відображається все мережеве з'єднання. Ви можете фільтрувати лише "прослуховування" з'єднань і бачити http-сервери.

Ви можете створити файл 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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.