ネットワークサービスのトラブルシューティングが必要な場合、最初のステップは、サービスが実行されていることを確認することです。
サービスに初期化(init)スクリプトがインストールされている場合は、service
を使用できます。 サービスを開始、停止、およびステータスを確認するコマンド。このコマンドは、/etc/init.d
に保存されているinitスクリプトを使用してサービスを参照します。 Debian®ベースのディストリビューションとetc/rc.d/init.d
のディレクトリ RedHat®ベースのディストリビューションのディレクトリ。
システムがサービスに使用する名前がわからない場合は、ls
を使用して上記のディレクトリのいずれかを確認してください コマンドの後にディレクトリ名が続きます。一部の名前は、ディストリビューションによって異なります。たとえば、Apache®はhttpd
です。 CentOS®およびapache2
Ubuntu®オペレーティングシステム上。
注 :多くの新しいLinux®ディストリビューションはsystemd
を使用しています netstat
の代わりに サービスをチェックします。 systemd
を使用している場合 、すべてのservice <service-name> <status>
を置き換えます systemct1 <status> <service-name>
のコマンド 。systemct1
の詳細については コマンドについては、Fedora™SysVinitからSystemdのチートシートを参照してください。
サービスには、次のステータスのいずれかがあります。
start
:サービスが開始されました。stop
:サービスの実行が停止しました。restart
:サービスは再起動中であり、プロセスが完了すると開始されます。
次の例は、httpd
のステータスを確認する方法を示しています。 CentOSでservice
を使用する コマンド:
$ sudo service httpd status
httpd is stopped
サービスが実行されていない場合は、service
を使用できます それを開始するコマンド。次の例は、httpd
を開始します サービス:
$ sudo service httpd start
Starting httpd: [ OK ]
アプリケーションを起動できない場合、システムは障害を報告し、通常、問題の原因を示すメッセージを表示します。
$ 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]
netstatを使用してポートの競合を検出します
前の例では、httpd
何かがすでにポートでリッスンしているため、開始できません。何を聞いているかを調べるには、netstat
を実行します コマンド。
次のコマンドを実行して、リスニングプログラムとそれらが使用しているポートのリストを表示します。
# 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
出力は、nc
が プログラム(Program name
に表示されます 列)はポート80(Local Address
に表示されます)でリッスンしています 桁)。このプログラムを停止すると、httpd
が有効になります 開始します。
注 :netstat
の詳細については コマンドについては、netstatでリスニングポートを確認するを参照してください。
xinetdステータスを確認する
サービスが実行されていない場合は、拡張インターネットサービスデーモン(xinetd
などのスーパーサーバーが原因である可能性があります )は、接続が受信されたときにプログラムを起動するために使用されています。この場合、サービスを開始すると問題が解決した可能性があります。次のコマンドを実行して、問題が解決したことを確認します。
$ sudo service xinetd status
xinetd (pid 8795) is running...
サービスを開始できない場合は、ログを確認して、問題に関する情報が含まれているかどうかを確認してください。
アプリケーションが実行されていることを確認したら、サーバーリソースをチェックして、アプリケーションがどれだけ消費しているかを確認します。