Wenn Sie Probleme mit einem Netzwerkdienst beheben müssen, müssen Sie zunächst sicherstellen, dass der Dienst ausgeführt wird.
Wenn für den Dienst ein Initialisierungsskript (init) installiert ist, können Sie den service verwenden Befehl zum Starten, Stoppen und Überprüfen des Status des Dienstes. Dieser Befehl verweist auf einen Dienst, indem er sein Init-Skript verwendet, das in /etc/init.d gespeichert ist Verzeichnis für Debian®-basierte Distributionen und etc/rc.d/init.d Verzeichnis für Red Hat®-basierte Distributionen.
Wenn Sie den Namen, den das System für einen Dienst verwendet, nicht kennen, überprüfen Sie eines der vorangehenden Verzeichnisse mithilfe von ls Befehl gefolgt vom Verzeichnisnamen. Einige Namen variieren je nach Distribution. Apache® ist beispielsweise httpd auf CentOS® und apache2 auf dem Betriebssystem Ubuntu®.
Hinweis :Viele neuere Linux®-Distributionen verwenden systemd statt netstat Dienstleistungen zu überprüfen. Wenn Sie systemd verwenden , ersetzen Sie allservice <service-name> <status> Befehle mit systemct1 <status> <service-name> .Weitere Informationen zu systemct1 Befehle finden Sie im Fedora™SysVinit to Systemd Cheatsheet.
Überprüfen Sie den Dienststatus
Ein Dienst kann einen der folgenden Status haben:
start:Der Dienst wurde gestartet.stop:Der Dienst läuft nicht mehr.restart:Der Dienst wird neu gestartet und nach Abschluss des Vorgangs gestartet.
Das folgende Beispiel zeigt, wie der Status von httpd geprüft wird auf CentOS, indem Sie den service verwenden Befehl:
$ sudo service httpd status
httpd is stopped
Dienst starten
Wenn ein Dienst nicht ausgeführt wird, können Sie den service verwenden Befehl, um es zu starten. Das folgende Beispiel startet den httpd Dienst:
$ sudo service httpd start
Starting httpd: [ OK ]
Wenn die Anwendung nicht gestartet werden kann, meldet das System den Fehler und zeigt normalerweise eine Meldung an, die die Ursache des Problems angibt.
$ sudo service httpd start
Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
[FAILED]
Verwenden Sie netstat, um Portkonflikte zu finden
Im vorherigen Beispiel httpd kann nicht gestartet werden, da bereits etwas am Port lauscht. Um herauszufinden, was zuhört, können Sie netstat ausführen Befehl.
Führen Sie den folgenden Befehl aus, um eine Liste der lauschenden Programme und der von ihnen verwendeten Ports anzuzeigen:
# netstat -plnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 10.176.77.113:3306 0.0.0.0:* LISTEN 28509/mysqld
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2113/nc
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1115/master
tcp 0 0 :::22 :::* LISTEN 1051/sshd
Die Ausgabe zeigt, dass der nc Programm (das im Program name erscheint Spalte) lauscht auf Port 80 (der in der Local Address erscheint Säule). Das Beenden dieses Programms sollte httpd aktivieren gestartet werden.
Hinweis :Weitere Informationen zu netstat Befehl finden Sie unter Überwachungsports mit netstat überprüfen.
xinetd-Status prüfen
Wenn der Dienst nicht ausgeführt wird, kann dies daran liegen, dass ein Superserver wie ein Extended Internet Service Daemon (xinetd ) wird verwendet, um das Programm zu starten, wenn eine Verbindung empfangen wird. Wenn dies der Fall ist, hat das Starten des Dienstes das Problem möglicherweise behoben. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob das Problem behoben ist:
$ sudo service xinetd status
xinetd (pid 8795) is running...
Protokolle prüfen
Wenn Sie Ihren Dienst nicht starten können, überprüfen Sie Ihre Protokolle, um festzustellen, ob sie Informationen zu dem Problem enthalten.
Nächste Schritte
Nachdem Sie sicher sind, dass die Anwendung ausgeführt wird, überprüfen Sie die Serverressourcen, um festzustellen, wie viel Ihre Anwendung verbraucht.