InfraAcademy

InfraAcademy Blog

Linuxのトラブルシューティング手順を解説!【障害が発生した際にどうすればいいのか?】

| #Linux #Linux初心者
Linuxをブラウザで試してみる

Linux・ネットワーク・AWSを、環境構築なしで実践学習できます

こんにちは、フルスタックエンジニアのryuです。

Linuxサーバーで障害が発生したとき、何から確認すれば良いのか分からなくなることはありませんか?

思いついたコマンドを片っ端から実行しても、原因を見つけるのは難しいです。

Linuxのトラブルシューティングでは、まず影響範囲を確認し、一つずつ切り分けることが大切です。

Linuxのトラブルシューティングは何から始める?

トラブルが起きたときに、いきなりサーバーを再起動するのはおすすめしません。

再起動によって一時的に直ることはありますが、原因を調査するために必要だった状態が分からなくなることもあります。

まずは、次の流れで考えてみましょう。

手順 確認すること
1. 状況確認 何が使えないのか、いつから発生したのか
2. 影響範囲確認 一部の機能だけか、システム全体か
3. 原因の切り分け プロセス、ログ、リソース、ネットワークなど
4. 復旧 サービス再起動、切り戻しなど
5. 原因調査 なぜ障害が発生したのか
6. 再発防止 監視、設定、手順などを改善する

会社によって手順は異なりますが、復旧と原因調査を分けて考えることが大切です。

まず障害の状況と影響範囲を確認する

障害が発生したら、最初に何が起きているのか整理します。

Webサイトへアクセスできない場合でも、原因はWebサーバーとは限りません。

まず次のような情報を確認します。

確認項目 具体例
発生時刻 10:25頃からアクセスできない
対象 Webサイト全体、特定画面だけ
利用者 全ユーザー、一部ユーザー
直前の変更 デプロイ、設定変更、OS更新
エラー内容 502、503、Connection refusedなど
再現性 常に発生するか、断続的か

発生時刻と直前の変更が分かると、ログや原因候補を絞りやすくなります。

Linuxサーバー自体が動いているか確認する

サーバーへSSH接続できる場合は、まずLinux自体の状態を確認します。

現在時刻や稼働時間を簡単に確認するなら、次のコマンドが使えます。

date
uptime

uptimeでは、サーバーがどれくらい連続稼働しているか、ロードアベレージがどの程度かを確認できます。

12:30:10 up 25 days,  3 users,  load average: 0.15, 0.10, 0.08

障害直前に意図しない再起動が発生していないかを見る材料にもなります。

サービスやプロセスが動いているか確認する

Webサイトへアクセスできない場合は、NginxやApacheなど対象サービスが起動しているか確認します。

systemdを利用しているLinuxでは、次のように確認できます。

systemctl status nginx

Apacheであれば、環境に応じて次のようになります。

systemctl status apache2

サービスが停止している場合は、画面にエラーが表示されることがあります。

プロセス全体を確認したい場合はpsも使えます。

ps aux

特定のプロセスだけ確認するなら、次のように絞れます。

ps aux | grep nginx

サービスが起動しているか、異常終了していないかを最初に確認しましょう。

【関連記事】プロセスの確認方法は、psコマンドの使い方解説!Linuxのプロセスを確認する方法でも詳しく解説しています。

Linuxのログを確認する

ログには障害原因のヒントが残っている

トラブルシューティングで特に重要なのがログです。

エラーが発生した時刻の前後に何が起きていたのかを確認すると、原因を絞り込みやすくなります。

systemdで管理されているサービスであれば、journalctlを利用できます。

journalctl -u nginx

直近のログだけ見たい場合は、次のように確認できます。

journalctl -u nginx -n 50

発生時刻が分かっている場合は、時間を指定すると調査しやすくなります。

journalctl -u nginx --since "2026-08-26 10:00"

アプリケーションやWebサーバーが独自のログファイルを出力している場合は、taillessを使います。

tail -n 100 /var/log/nginx/error.log

リアルタイムでログを確認する場合は、次のように実行します。

tail -f /var/log/nginx/error.log

【関連記事】ログを確認するコマンドは、Linuxでログ監視するコマンドtailとlessの使い方解説も参考にしてください。

CPUやメモリ不足が起きていないか確認する

サービスが動いていても、CPUやメモリを大量に使用していると処理が遅くなったり、アプリケーションが正常に動かなかったりします。

リアルタイムの状態はtopで確認できます。

top

メモリ使用量を見たい場合は、freeも便利です。

free -h

出力例は次のようになります。

               total        used        free      shared  buff/cache   available
Mem:           7.7Gi       2.1Gi       3.8Gi       120Mi       1.8Gi       5.2Gi

availableも確認し、CPU使用率が高い場合はtoppsで原因プロセスを調べます。

【関連記事】メモリの見方は、Linuxのメモリ使用率を確認する方法は?top・free・psコマンドの使い方解説で解説しています。

ディスク容量不足を確認する

Linuxサーバーでよくある障害原因の一つが、ディスク容量不足です。

ログが大量に出力され続けたり、バックアップファイルが残り続けたりすると、ディスクがいっぱいになることがあります。

まずdfでファイルシステムの使用量を確認します。

df -h

たとえば、Use%が100%に近いファイルシステムがないか確認します。

Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       30G   29G  1.0G  97% /

容量に余裕があるのにファイルを作成できない場合は、inode不足も確認します。

df -i

ディスクがいっぱいになっていることが分かっても、いきなりファイルを削除するのではなく、どのディレクトリが容量を使っているのか確認してから対応しましょう。

ネットワークの問題を切り分ける

サービスやリソースに問題がなければ、ネットワークも確認します。

まず自分のIPアドレスを確認します。

ip addr

ルーティング情報は次のコマンドです。

ip route

通信相手へ到達できるか確認する場合はpingを利用できます。

ping -c 4 192.168.1.10

ただし、ファイアウォールなどでICMPを拒否している環境では、サービスが正常でもpingへ応答しない場合があります。

Webサーバーがローカルでは応答するか確認したい場合は、curlも便利です。

curl -I http://localhost

ローカルでは応答するのに外部から接続できない場合は、ファイアウォールやクラウド側の設定も確認します。

ポートが待ち受けているかはssで確認できます。

ss -lntp

このように、アプリケーション → Linux → ネットワークと範囲を分けて確認すると原因を絞り込みやすくなります。

カーネルやハードウェア関連のログを確認する

OSやデバイスに近い問題では、dmesgが役立つ場合があります。

dmesg

直近のメッセージだけ確認するなら、次のように使えます。

dmesg -T | tail -n 50

メモリ不足によってプロセスが終了された場合や、ディスク・ネットワークデバイスに関するメッセージが記録されることがあります。

ただし、環境によっては一般ユーザーからすべてのカーネルログを参照できない場合があります。その場合は適切な権限で確認してください。

とりあえず再起動する前に確認したいこと

障害対応では、再起動で復旧するケースもあります。

ただし、何も確認せずにサーバーやサービスを再起動すると、なぜ障害が発生したのか分からなくなることがあります。

再起動前には最低限、次の情報を残しておくと調査しやすいです。

date
uptime
free -h
df -h
ps aux
systemctl status nginx

必要に応じてログも保存します。

業務影響が大きい場合は、運用手順に沿ってサービス再起動や切り戻しを行います。

復旧したあとに原因と再発防止を考える

システムが復旧しても、障害対応は終わりではありません。

なぜ障害が起きたのかを整理し、同じ問題が起きないように対策します。

たとえばディスク容量不足が原因だった場合、不要ファイルを削除するだけでは再発する可能性があります。

ログローテーションを設定する、ディスク使用率を監視する、一定値を超えたらアラートを通知するといった対策まで考えます。

人的ミスなら、レビューや自動化などでミスが起きにくい仕組みを作ります。

Linuxのトラブルシューティングは練習しておく

普段からLinuxを操作し、プロセス、ログ、メモリ、ネットワークを確認する練習をしておくことが大切です。

InfraAcademyでは、Linuxのコマンドをブラウザ上で実行しながら学習できます。

Linuxを基礎から学習したい方は、Linux入門講座をご覧ください。

ネットワーク障害の切り分けに必要なIPアドレスやルーティングは、ネットワーク講座で学習できます。

AWS上のLinuxやクラウド環境も学びたい方は、AWS講座も用意しています。

関連:Linuxのコマンド練習におすすめのInfraAcademy【Linuxのコマンドをブラウザで練習しよう】

Linuxのトラブルシューティングまとめ

今回の記事では、Linuxで障害が発生した際のトラブルシューティング手順について解説しました。

大切なのは、最初から原因を決めつけず、状況を確認しながら一つずつ切り分けることです。

Webサイトへアクセスできないのであれば、サービスが動いているか、ログにエラーがないか、CPUやメモリは足りているか、ディスクはいっぱいになっていないか、ネットワークは正常かという順番で確認できます。

よく使うコマンドをまとめると、次のようになります。

確認内容 コマンド例
稼働時間 uptime
プロセス ps auxtop
サービス systemctl status
ログ journalctltail
メモリ free -h
ディスク df -hdf -i
IP・経路 ip addrip route
通信 pingcurl
ポート ss -lntp
カーネルログ dmesg

コマンドを暗記するだけではなく、どの問題を確認するためにそのコマンドを使うのかまで理解しておきましょう。

日頃から実際にLinuxを操作しておくと、障害が発生したときにも落ち着いて原因を切り分けられるようになります。

Next Action

記事で読んだ内容を、講座で実装してみましょう

InfraAcademyでは、ブラウザ上でLinuxやネットワークの実践環境を使いながら学習できます。無料で始められる講座から、学習の流れを試せます。

この記事を書いた人

ryu

InfraAcademy運営 / エンジニア

エンジニア歴10年。Linux、ネットワーク、クラウドを中心に、実務で役立つインフラ技術を初心者にもわかりやすく解説しています。

X: @ryu63614894

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

ログインすれば無料で始められる講座です。気になったテーマから手を動かして学べます。

講座一覧を見る