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