Как сказанный Renan при перезагрузке компьютера между каждой системой, затем это - двойная загрузка. Можно ли установить Монетный двор на внешнем устройстве и начальной загрузке от этого? Да, если настройки позволяют :)
Я сделал это с Ubuntu прежде. Сначала я загрузился от LiveCD на компьютере, и я выбрал внешний диск как устройство для установки на. Старайтесь удостовериться, что GRUB записан во внешний диск и не Ваш внутренний диск. После установки на внешнем диске Вы, возможно, должны ввести BIOS своего компьютера, чтобы позволить загружаться от внешнего устройства.
После выполнения этого у Вас должна быть портативная операционная система Linux. Мой установлен на старой внешней карте памяти на 40 ГБ, и я использую ее для диагностирования/спасания проблем с компьютерами Windows.
Большинство людей запускают свои 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
К этому моменту, любые проблемы, о которых Вы сообщали, являются либо проблемами в приложении (которые могут иметь свою собственную ошибку - обработку и -сообщение, либо они на стороне клиента).
Комбинация этих тестов может помочь определить, где также находится проблема.
На большинстве дистрибутивов 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
$ 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