Linuxは強力で信頼性の高いオペレーティングシステムですが、経験豊富なユーザーでさえ予期せぬ問題に遭遇することがあります。削除されたファイル、忘れられたルートパスワード、または遅いシステムなど、効率的なトラブルシューティング方法を知ることは、真のLinuxエキスパートになるための鍵です。
このガイドでは、システム管理者、開発者、そして日常的なLinuxユーザーの間で一般的な、実際のLinuxの問題解決シナリオと、段階的な解決策を紹介しています。
シナリオ1:重要なファイルを誤って削除した
rmコマンドを使用して重要なファイルを誤って削除し、今それを回復する必要があります。 WindowsやmacOSとは異なり、Linuxには端末から削除されたファイルのための「ごみ箱」が組み込まれていません。
回復オプションは使用中のファイルシステムに依存します。
EXT3/EXT4ファイルシステムの場合
Linuxでext3およびext4ファイルシステムから削除されたファイルを回復するために設計されたオープンソースユーティリティであるextundeleteを使用します。
sudo apt install extundelete # Debian-based sudo yum install extundelete # RHEL-based
回復を試みる前に、削除されたデータが上書きされるのを防ぐためにパーティションをアンマウントしてください。
sudo umount /dev/sdX
次に、次のコマンドを実行して削除されたファイルを回復してください。ファイルが削除された実際のパーティションに/dev/sdX
を置き換えてください。
sudo extundelete /dev/sdX --restore-all
XFS、Btrfs、またはNTFSファイルシステムの場合
システムが XFS、Btrfs、またはNTFSを使用している場合、testdiskツールがより良い選択肢です。
sudo apt install testdisk # Debian-based sudo yum install testdisk # RHEL-based
testdiskを実行し、対話型プロンプトに従って失われたファイルを復元します。
sudo testdisk
予防のヒント:
-
- trash-cli の使用:
rm
の代わりに、ファイルを復元可能なゴミ箱に送信するためにtrash-cli
を使用します。
- trash-cli の使用:
sudo apt install trash-cli trash-put myfile.txt
シナリオ2: ルートパスワードのリカバリ
ルートパスワードを忘れて管理的なタスクを実行できない場合、ソフトウェアのインストール、システム設定の変更、クリティカルなファイルへのアクセスができません。
回復モードにブートしてルートパスワードをリセットするか、GRUBブートローダーを変更します。
回復モードの使用(Ubuntu/Debian)
最初にシステムを再起動して、起動中にShift
キーを押してGRUBメニューにアクセスし、「高度なオプション」→「回復モード」を選択し、「rootシェルプロンプトに切り替え」を選択します。
ここで、ルートファイルシステムを書き込み可能に再マウントしてrootパスワードをリセットします。
mount -o remount,rw / passwd root
システムを再起動します。
reboot
rd.break を使用する(RHEL/CentOS/Fedora)
最初に、システムを再起動し、GRUBメニューでe
を押して、linux
で始まる行を見つけて末尾にrd.break
を追加します。
次に、ルートファイルシステムをマウントして、rootパスワードをリセットします。
mount -o remount,rw /sysroot chroot /sysroot passwd root
最後に、終了して再起動します。
exit reboot
予防のヒント:
- rootアクセスをロックアウトされないように、パスワードなしのsudoユーザーを作成します。
- 認証にパスワードの代わりにSSHキーを使用します。
シナリオ3: パッケージをインストールしたが動作しない
パッケージをインストールしましたが、実行しようとすると「command not found
」と表示され、通常はバイナリがシステムのPATHにない、パッケージが正しくインストールされていない、または依存関係が不足している場合に発生します。
解決策は、まずパッケージがインストールされているかどうかを確認する必要があります。
dpkg -l | grep package-name # Debian-based rpm -qa | grep package-name # RHEL-based
不足している場合は、再インストールします。
sudo apt install package-name sudo yum install package-name
次に、コマンドがシステムのPATHにあるかどうかを確認します。
which package-name echo $PATH
バイナリが標準以外の場所にある場合は、それをPATHに追加します:
export PATH=$PATH:/usr/local/bin
予防対策:
シナリオ4:システムのディスク容量が不足している
システムが「デバイス上に空き領域がありません」というエラーを表示し、ソフトウェアの更新、ログ記録、通常の操作ができなくなります。
ディスク容量を回復してシステムをスムーズに動作させる方法は次の通りです。
ステップ1:ディスク使用状況の確認
解決策は、ますます各パーティションでどれだけのスペースが使用されているかをdfコマンドを使用して確認する必要があります。
df -h
ステップ2:大きなファイルの検索と削除
次に、duコマンドを実行して、システムをスキャンし、最も多くのスペースを消費している上位10の大きなファイルやディレクトリをリストアップします。不要なファイルはrm
を使用して削除するか、外部ドライブに移動してください。
du -ah / | sort -rh | head -10
ステップ3:不要なログを削除する
ログはトラブルシューティングやシステムアクティビティの監視には必要不可欠ですが、急速に増大しディスク容量のかなりの部分を占有することがあります。
経時的に古くなったログはもはや必要ない場合があり、クリーンアップの対象となります。
sudo journalctl --vacuum-time=2d # Deletes logs older than 2 days sudo apt autoclean # Removes outdated package files
ステップ4:古いカーネルを削除する(Ubuntu/Debian)
システムをアップデートする際、特にUbuntuやDebianベースのディストリビューションでは、Linuxカーネルの新しいバージョンがインストールされることがよくあります。
しかし、古いカーネルは自動的に削除されず、経時的にこれらの古いカーネルが蓄積されてかなりのディスク容量を占有する可能性があります。
これらを削除することは、システムの機能に影響を与えることなくスペースを開放する安全かつ効果的な方法です。
sudo apt autoremove --purge
予防のヒント:
- ログローテーションの設定: logrotateを使用してログファイルのサイズと保存期間を自動管理します。
- ディスク使用量のモニタリング: ncduなどのツールをインストールしてディスク使用量を追跡し、スペースを占有する要因を特定します。
- 定期的なクリーンアップ: 一時ファイル、キャッシュ、未使用のパッケージを削除する定期的なクリーンアップをスケジュールします。
シナリオ5: サーバーが突然応答しない
Linuxサーバーを管理していて、突然応答しなくなり、SSH経由で接続を試みてもタイムアウトしたり接続が拒否されることがあります。サーバーは電源が入っている状態であることに気づくかもしれませんが、どのコマンドにも反応しないかもしれません。
この状況は、次のような問題が原因で発生する可能性があります:
- 暴走プロセスによる高いCPUまたはメモリ使用率
- 読み書き操作でシステムが過負荷になるディスクI/Oのボトルネック
- カーネルパニックやシステムクラッシュ
- リモートアクセスを妨げるネットワーク障害
制御を回復させるために、これらのトラブルシューティング手順に従ってください。
ステップ1: ローカルまたはTTY経由でサーバーにアクセス
SSHが機能しない場合は、サーバーに直接アクセスするかTTYセッションを介してアクセスしてみてください。
- 物理マシンの場合は、ローカルコンソールを使用します。
- 仮想マシンの場合は、ハイパーバイザのコンソールを使用します。
- Linuxシステムの場合は、
Ctrl + Alt + F2
(またはF3
、F4
など)を使用して別のTTYセッションに切り替えます。
ステップ2: システムの負荷をチェック
ログイン後、システムの負荷とリソース使用状況をチェックしてください。これにより、1分、5分、および15分間の平均負荷が表示されます。 CPUコア数より高い負荷値は、高い需要を示します。
uptime
次に、topまたはhtopを使用してプロセスをリアルタイムで監視します。
top Or htop
過剰なCPUまたはメモリを消費しているプロセスを探してください。
ステップ3: ハングアップしたプロセスを特定して終了させる
最もリソースを消費しているプロセスを特定するには、次のコマンドを実行します。
ps aux --sort=-%cpu | head
これにより、CPUを最も消費しているプロセスが一覧表示され、問題のあるプロセスを次のようにして終了させることができます。
kill -9 PID
問題のあるアプリケーションのプロセスIDでPID
を置き換えてください。
ステップ4: システムログをチェック
システムがまだ応答している場合は、エラーのためにログを確認してください。
sudo tail -f /var/log/syslog Or sudo dmesg | tail
これらのコマンドは、最近のシステムメッセージやカーネルログを表示し、ハードウェアやソフトウェアの問題を特定するのに役立ちます。
ステップ5:SysRqを使用した安全な再起動
システムが完全にフリーズした場合は、SysRqキーの組み合わせを使用して安全に再起動します。
echo b > /proc/sysrq-trigger
これにより、ディスクの同期とファイルシステムのアンマウントが行われ、データの整合性が確保されます。
結論
トラブルシューティングは、すべてのLinuxユーザーにとって重要なスキルです。削除されたファイルの回復、パスワードのリセット、システムエラーの修正など、適切なコマンドを知っていることは、時間とストレスを節約できます。
あなた独自のトラブルシューティングのヒントはありますか?コメントで共有してください!一緒に有益なLinuxコミュニティを築きましょう。