GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich über die Befehlszeile herausfinden, ob httpd ausgeführt wird oder nicht?

Die meisten Leute führen ihren httpd (Apache, Nginx usw.) über ein Init-System aus. Das ist mit ziemlicher Sicherheit der Fall, wenn Sie aus einem Paket installiert haben. Fast alle diese Init-Systeme haben eine Methode, die funktioniert, wenn sie läuft. In meinem Fall verwende ich nginx, das ein Init-Skript im SysV-Stil enthält und einen status akzeptiert Argument, etwa so:

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

Wenn Sie ein anderes httpd-, Skript- oder Init-System verwenden, haben Sie natürlich eine etwas andere Syntax, aber wenn Sie den httpd nicht manuell starten (was sich wie die schlechteste Idee der Welt anfühlt), sind Sie es wahrscheinlich mit einem netten, verwalteten Startskript, mit dem Sie den Status abfragen können.

Die Antwort von slm hat mehr über diese Art von Init-Abfragen, aber das Problem mit dem Vertrauen, dass es Ihnen nur wirklich sagt, ob ein Prozess noch läuft. Der Hauptprozess Ihres httpd könnte laufen, aber in gewisser Weise festgefahren. Es ist sehr sinnvoll, einfache Init-Tests zu überspringen und mit Verhaltenstests fortzufahren.

Eine Sache, die wir über httpds wissen, ist, dass sie zuhören. Normalerweise auf Port *:80 , aber wenn dies bei Ihnen nicht der Fall ist, können Sie den folgenden Code anpassen. Hier bin ich gerade awk Ausgabe von netstat um zu sehen, ob es am richtigen Port lauscht.

$ 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

Wir könnten auch welche überprüfen Prozess läuft auch, um sicherzustellen, dass das richtig ist httpd läuft. Wir könnten alle möglichen Kontrollen durchführen. Hängt davon ab, wie paranoid du sein möchtest :)

Aber selbst das ist nur ein Spiegelbild eines httpd. Willst du es wirklich testen? Nun, lassen Sie uns testen es.

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

Ich schaue mir nur den Antwortcode an (200 bedeutet „A-Okay!“), aber noch einmal, wir könnten uns einarbeiten und die Ausgabe tatsächlich testen, um sicherzustellen, dass sie korrekt generiert wird.

Aber selbst das ist nicht so gründlich. Sie überprüfen gerade localhost und es meldet 200, nichts falsch? Was wäre, wenn Biber das Netzwerkkabel durchkauen würden, das den httpd versorgt (aber nicht den Rest des Systems)? Dann was?! Sie melden die Betriebszeit, wenn Sie tatsächlich ausgefallen sind. Wenige Dinge sehen unprofessioneller aus als falsche Statusdaten.

Lassen Sie uns also mit einem externen Server sprechen (idealerweise mit einer ganz anderen Verbindung, in einer anderen, weit, weit entfernten Galaxie) und ihn bitten, unseren Server abzufragen:

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

Zu diesem Zeitpunkt sind alle gemeldeten Probleme entweder In-App-Probleme (die ihre eigene Fehlerbehandlung und -meldung haben können, oder sie liegen beim Kunden).

Eine Kombination dieser Tests kann ebenfalls dabei helfen, das Problem zu ermitteln.


Sie können den Dienstbefehl universell auf den meisten Linux-Distributionen verwenden.

$ service <service> status

Beispiel

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

Derselbe Befehl kann für alle Dienste verwendet werden, die einzeln ausgeführt werden, oder um den Status aller Dienste zu ermitteln.

$ 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...
...

Die verschiedenen Methoden innerhalb von SysVinit, Systemd und Upstart zum Auflisten von Diensten

Wenn Sie eines der typischeren Dienstverwaltungs-Frameworks verwenden, können Sie die Dienste mit den folgenden Methoden auflisten.

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  

Neuling

$ 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

Referenzen

  • SysVinit zu Systemd Cheatsheet
  • Befehl zum Auflisten von Diensten, die beim Start gestartet werden?

Linux
  1. Welche Linux-Version verwende ich? So finden Sie es heraus

  2. Wie beendet man die Chromium-Befehlszeile über SSH?

  3. Ausführen von Software-Center von der Befehlszeile als Root?

  4. find:Befehl nicht gefunden

  5. Wie finde ich heraus, welche Version von Linux ich verwende?

So finden Sie die öffentliche IP-Adresse über die Befehlszeile unter Linux heraus

So finden Sie heraus, wie lange ein Prozess unter Linux läuft

So finden Sie CPU-Informationen in Linux über die Befehlszeile

So finden Sie die IP-Adresse in der Linux-Befehlszeile

Gewusst wie:Linux Allgemein – Grundlegende IPTables über die Befehlszeile

Wie finde ich die platzraubendsten Verzeichnisse oder Dateien heraus?