ネットワークサービスのトラブルシューティングが必要な場合、最初のステップは、サービスが実行されていることを確認することです。
サービスに初期化(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...
サービスを開始できない場合は、ログを確認して、問題に関する情報が含まれているかどうかを確認してください。
アプリケーションが実行されていることを確認したら、サーバーリソースをチェックして、アプリケーションがどれだけ消費しているかを確認します。