Как узнать, работает ли httpd или не через командную строку?

Как сказанный Renan при перезагрузке компьютера между каждой системой, затем это - двойная загрузка. Можно ли установить Монетный двор на внешнем устройстве и начальной загрузке от этого? Да, если настройки позволяют :)

Я сделал это с Ubuntu прежде. Сначала я загрузился от LiveCD на компьютере, и я выбрал внешний диск как устройство для установки на. Старайтесь удостовериться, что GRUB записан во внешний диск и не Ваш внутренний диск. После установки на внешнем диске Вы, возможно, должны ввести BIOS своего компьютера, чтобы позволить загружаться от внешнего устройства.

После выполнения этого у Вас должна быть портативная операционная система Linux. Мой установлен на старой внешней карте памяти на 40 ГБ, и я использую ее для диагностирования/спасания проблем с компьютерами Windows.

29
12.05.2016, 16:19
2 ответа

Большинство людей запускают свои httpd (Apache, Nginx и т.д.) через init-систему. Это почти наверняка так, если вы установили его из пакета. Почти во всех этих init-системах есть метод, который работает, если он запущен. В моём случае я использую nginx, который поставляет init-скрипт в стиле SysV и который принимает аргумент status, например:

$ /etc/init.d/nginx status
 * nginx is running

Очевидно, что если вы используете другой httpd, скрипт или init-систему, у вас будет немного другой синтаксис, но если вы вручную не запускаете httpd самостоятельно (что кажется самой худшей идеей в мире), вы, вероятно, используете хороший, управляемый стартап-скрипт, который позволит вам сделать запрос о статусе. В ответе

slm больше говорится о подобном init-запросе, но проблема с доверием в том, что он реально говорит вам только о том, что процесс все еще запущен. Основной процесс вашего httpd может быть запущен, но в каком-то смысле заблокирован. Имеет смысл пропустить простые init-тесты и перейти к поведенческим тестам.

Одно мы знаем о httpds - они слушают. Обычно на порту *:80, но если нет, то можно адаптировать следующий код. Здесь я просто awkна выходе netstat, чтобы посмотреть, прослушивает ли он на правильном порту.

$ sudo netstat -ntlp | awk '$4=="0.0.0.0:80"'
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      2079/nginx

Мы также можем проверить , который процесс также запущен, чтобы убедиться, что right httpd запущен. Мы можем сделать всевозможные проверки. Зависит от того, насколько параноидальным Вы хотите быть :)

Но даже это только отражение httpd. Хотите действительно проверить его? Ну, давайте проверим.

$ wget --spider -S "http://localhost" 2>&1 | awk '/HTTP\// {print $2}'
200

Я просто смотрю на код ответа (200 означает "A-Okay!"), но опять же, мы могли бы покопаться и протестировать вывод, чтобы убедиться, что он генерируется правильно.

Но даже это не так уж и тщательно. Вы проверяете localhost и он сообщает 200, ничего плохого? Что если бобры прогрызли сетевой кабель, который поставляет httpd (но не всю остальную систему)? Тогда что?! Ты сообщаешь о времени безотказной работы, когда ты на самом деле не работаешь. Немногие вещи выглядят более непрофессионально, чем неправильные данные о состоянии.

Итак, давайте поговорим с внешним сервером (в идеале, на совершенно другом соединении, в другой галактике далеко, далеко) и попросим его сделать запрос нашему серверу:

$ ssh tank 'wget --spider -S "http://bert" 2>&1' | awk '/HTTP\// {print $2}'
200

К этому моменту, любые проблемы, о которых Вы сообщали, являются либо проблемами в приложении (которые могут иметь свою собственную ошибку - обработку и -сообщение, либо они на стороне клиента).

Комбинация этих тестов может помочь определить, где также находится проблема.

28
27.01.2020, 19:38

На большинстве дистрибутивов Linux команду служб можно использовать универсально.

$ service <service> status

Пример

$ service httpd status
httpd (pid  23569) is running...

Эта же команда может быть использована для всех служб, которые запущены на индивидуальной основе, или для определения статуса всех служб.

$ service --status-all
python is stopped
automount (pid 22457) is running...
Avahi daemon is not running
Avahi DNS daemon is not running
crond (pid  23577) is running...
gpm is stopped
hald is stopped
httpd (pid  23569) is running...
...

Различные методы в SysVinit, Systemd и Upstart для перечисления служб

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

SysVinit

$  ls -l /etc/init.d/ | head -10
total 220
-rwxr-xr-x 1 root root  1422 Jan 13  2009 ajaxterm
-rwxr-xr-x 1 root root  3052 Apr 20  2012 autofs
-rwxr-xr-x 1 root root  1877 Apr 13  2011 avahi-daemon
-rwxr-xr-x 1 root root  1824 Apr 13  2011 avahi-dnsconfd
-rwxr-xr-x 1 root root  1926 Feb 22  2012 crond
-rwxr-xr-x 1 root root 14291 Dec 19  2011 functions
-rwxr-xr-x 1 root root  1778 Jan  6  2007 gpm
-rwxr-xr-x 1 root root  1586 Mar  5  2011 haldaemon
-rwxr-xr-x 1 root root  5742 Dec 19  2011 halt

Systemd

$ systemctl list-unit-files --type=service | head -10
UNIT FILE                                   STATE   
abrt-ccpp.service                           enabled 
abrt-oops.service                           enabled 
abrt-pstoreoops.service                     disabled
abrt-vmcore.service                         enabled 
abrt-xorg.service                           enabled 
abrtd.service                               enabled 
accounts-daemon.service                     enabled 
alsa-restore.service                        static  
alsa-state.service                          static  

Upstart

$ initctl list | head -10
avahi-daemon start/running, process 1090
mountall-net stop/waiting
nmbd start/running, process 2045
passwd stop/waiting
rc stop/waiting
rsyslog start/running, process 1088
tty4 start/running, process 1211
udev start/running, process 483
upstart-udev-bridge start/running, process 480
ureadahead-other stop/waiting

References

25
27.01.2020, 19:38

Теги

Похожие вопросы