ページにアクセスしようとしても表示されないとき、ただ重いだけなのかサーバー側に何かしら問題があったのか調べる必要があります。(もちろん「ただ重いだけ」というのも問題があることなんですか・・・)
調べるときに有効的なLinuxコマンドがあります。
それが、「PINGコマンド」と「CURLコマンド」です。
この2つのコマンドは、エンジニアとして働き始めれば自然と使っていくことになっていくと思いますが、エンジニアになるために勉強している方や、まだ経験の浅いジュニア層の方にとっては馴染みのないコマンドだと思います。(言いがかりです笑、自分がそうだっただけです・・・。)
それでは、簡単な説明と使い方を確認していきましょう。
使う順番としては、PINGコマンドを実行してからCURLコマンドを実行すると思うので、説明もその順番でしていきます。
PINGコマンド
PINGコマンドを実行することで次のことが確認できます。
- 接続先のサーバーが稼働しているかどうか
- 接続先までの通信経路が正しく設定設定さているかどうか
つまり、「相手が生きているか」と「通信できる状態か」を確認するコマンドです。
PINGコマンドの使い方
使い方は、とても簡単です。(一方でオプションがたくさん用意されているので、できることは多いです。ぜひ調べてみてください。)
次のように、ホスト名を指定するだけです。
# ping ドメイン名またはIPアドレス
# 例えば、googleでやってみると次のようになります
ping google.com
PINGコマンドの結果の見方
結果例として次のとおりです。(「^C」は、Ctrlキー+Cで処理を終了している表示です)
環境によって、表記が多少異なることがありますが、意味合いとしては同じです。
ping google.com
PING google.com (172.217.161.78) 56(84) bytes of data.
64 bytes from 172.217.161.78 (172.217.161.78): icmp_seq=1 ttl=37 time=3.100 ms
64 bytes from 172.217.161.78 (172.217.161.78): icmp_seq=2 ttl=37 time=6.03 ms
64 bytes from 172.217.161.78 (172.217.161.78): icmp_seq=3 ttl=37 time=6.40 ms
64 bytes from 172.217.161.78 (172.217.161.78): icmp_seq=4 ttl=37 time=13.7 ms
64 bytes from 172.217.161.78 (172.217.161.78): icmp_seq=5 ttl=37 time=5.44 ms
64 bytes from 172.217.161.78 (172.217.161.78): icmp_seq=6 ttl=37 time=8.12 ms
64 bytes from 172.217.161.78 (172.217.161.78): icmp_seq=7 ttl=37 time=5.37 ms
^C
--- google.com ping statistics ---
7 packets transmitted, 7 received, 0% packet loss, time 6010ms
rtt min/avg/max/mdev = 3.999/7.007/13.682/2.960 ms
上記の結果をみると、「接続先の相手は生きている!」ということが分かります。
結果の見方をざっくり説明すると、
- 「icmp_seq」は、何回目の導通試験かを表す数字です。
- 「ttl」は、パケットデータの体力みたいなものでルーターなどを通過すると消費されます。(ネットワーク上でパケットデータが残り続けることを防ぐための仕組み)
- 「time」は、導通試験用のパケットデータを送ってから相手の反応が戻ってくるまでの時間(=通信速度)です。
上記の結果をみると、Ctrlキー+Cで処理止めるまでに7回の導通試験を行い、7回とも相手からの反応を受信しています。
つまり、「相手は生きている」ということが分かります。
また、最後の方には、PINGコマンドの結果が表示されています。
下記の部分です。
7 packets transmitted, 7 received, 0% packet loss, time 6010ms
rtt min/avg/max/mdev = 3.999/7.007/13.682/2.960 ms
上記の場合、
- 7 packets transmitted → 「7回パケットを送信したよ(つまり、7回導通試験したよ)」
- 7 received → 「7回反応あったよ」
- 0% packet loss →「損失データは0%だから問題ないよ」
- time 6010ms → 「今回のPINGコマンド(導通試験)にかかった時間は6ぐらいだよ」
最後の「rtt」は、ラウンドトリップタイム の略で、データパケットが宛先に届くまでの時間と、送信先からの確認応答が発信元で受信されるのにかかる時間の長さです。つまり、行ってから帰ってくるまでの時間です。
PINGコマンドは「rtt」として、以下を返してくれます。
- min:最小時間
- avg:平均時間
- max:最大時間
- mdev:平均偏差(どのくらい応答時間にバラつきがあるか)
ダメだったときの表示一覧
もちろん、PINGコマンドを実行して相手からの反応を受信できないケースもあります。
ダメだったときの表示の一例として、次があげられます。PINGコマンドのエラー1つで、その原因を特定することは難しいですが、原因の切り分けをしていく上では大切な情報になります。
- Request timed out:応答を時間内に受け取ることができなかった
- PING: transmit failed:一般的なエラー
- Ping request could not find host noname:ホスト名の変換に失敗
CURLコマンド
PINGコマンドで「相手(サーバー)が生きている!」ということが確認できたら、次にCURLコマンドで確認していきます。
CURLコマンドを実行することで次のことが確認できます。
- 接続先のサーバーにHTTPリクエストを送って、どんなレスポンスが返ってくるか
つまり、生きている相手から返事の内容を確認するコマンドです。
CURLコマンドの使い方
今回は、「ページにアクセスしても表示されない場合」を想定してGETリクエストについて説明します。
CURLコマンドも使い方は簡単です。
次のように、URLを指定するだけです。
# ping {URL}
# 例えば、googleのトップページやると次のようになります
curl https://www.google.com/
CURLコマンドの結果の見方
結果例として次のとおりです。
環境によって、表記が多少異なることがありますが、意味合いとしては同じです。
すみません、作成中です・・・( 一一)