Když potřebujete vyřešit problémy se síťovou službou, prvním krokem je ujistit se, že služba běží.
Pokud má služba nainstalovaný inicializační (init) skript, můžete použít službu příkaz ke spuštění, zastavení a kontrole stavu služby. Tento příkaz odkazuje na službu pomocí jejího init skriptu, který je uložen v /etc/init.d adresář pro distribuce založené na Debian® a etc/rc.d/init.d adresář pro distribuce založené na Red Hat®.
Pokud neznáte název, který systém používá pro službu, zkontrolujte některý z předchozích adresářů pomocí ls příkaz následovaný názvem adresáře. Některá jména se liší v závislosti na vaší distribuci. Například Apache® je httpd na CentOS® a apache2 v operačním systému Ubuntu®.
Poznámka :Mnoho novějších distribucí Linuxu používá systemd místo netstat zkontrolovat služby. Pokud používáte systemd , nahraďte všeslužba systemct1 .Další informace o systemct1 příkazy, viz Cheatsheet Fedora™SysVinit to Systemd.
Zkontrolujte stav služby
Služba může mít kterýkoli z následujících stavů:
start:Služba byla spuštěna.stop:Služba se zastavila.restartovat:Služba se restartuje a spustí se po dokončení procesu.
Následující příklad ukazuje, jak zkontrolovat stav httpd na CentOSby pomocí služby příkaz:
$ sudo service httpd status
httpd is stopped
Spusťte službu
Pokud služba neběží, můžete použít službu příkaz k jeho spuštění. Následující příklad začíná httpd služba:
$ sudo service httpd start
Starting httpd: [ OK ]
Pokud aplikaci nelze spustit, systém ohlásí selhání a obvykle zobrazí zprávu, která označuje příčinu problému.
$ 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]
Použijte netstat k nalezení konfliktů portů
V předchozím příkladu httpd nelze spustit, protože na portu již něco poslouchá. Chcete-li zjistit, co poslouchá, můžete spustit netstat příkaz.
Spuštěním následujícího příkazu zobrazíte seznam naslouchacích programů a portů, které používají:
# 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
Výstup ukazuje, že nc program (který se objeví v Název programu sloupec) naslouchá na portu 80 (který se objeví v Local Address sloupec). Zastavení tohoto programu by mělo povolit httpd začít.
Poznámka :Další informace o netstat viz Kontrola naslouchacích portů pomocí netstat.
Zkontrolujte stav xinetd
Pokud služba neběží, může to být způsobeno tím, že superserver, jako je Extended Internet Service Daemon (xinetd ) se používá ke spuštění programu, když je přijato spojení. Pokud je to tento případ, spuštění služby mohlo problém vyřešit. Spuštěním následujícího příkazu ověřte, že je problém vyřešen:
$ sudo service xinetd status
xinetd (pid 8795) is running...
Kontrola protokolů
Pokud službu nemůžete spustit, zkontrolujte své protokoly, abyste zjistili, zda neobsahují informace o problému.
Další kroky
Až si budete jisti, že aplikace běží, zkontrolujte zdroje serveru a ověřte, kolik vaše aplikace spotřebovává.