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.