🐧 Linux 総合学習プラットフォーム

Linux 実務レシピ(40)

「ディスクが一杯」「ポートが使用中」など、現場で困る場面から手順を逆引きできる実務レシピ集です。

ディスクが一杯:容量を食っている犯人を見つける
df を見たら / が 95% 埋まっていた。何がそんなに容量を食っているのか突き止めて空けたい。
ポートが使用中:何がそのポートを掴んでいるか
サーバを起動したら『Address already in use』。8080 を誰かが先に使っている。犯人を見つけて空けたい。
Permission denied:権限で弾かれたとき
ファイルを開こう/スクリプトを実行しようとしたら『Permission denied』。何が足りないのか切り分けたい。
プロセスが暴走:CPUを食う犯人を止める
ファンが唸ってPCが重い。何かがCPUを100%使っている。犯人を見つけて落ち着かせたい。
ログを追う:エラーだけをリアルタイムに見る
アプリの調子が悪い。ログを流しっぱなしにして、エラーが出た瞬間を捕まえたい。
大量ファイルを一括で処理する
何百枚もの .jpeg を .jpg に直したい/全ファイルに接頭辞を付けたい。1つずつは無理。
サービスが起動しない:原因を突き止める
systemctl start したのに動いていない。status は failed。なぜ落ちたのか知りたい。
SSHを鍵ログインにする(パスワードなし)
毎回パスワードを打つのが面倒で、しかも安全にしたい。公開鍵認証でログインできるようにする。
毎日決まった時刻に自動実行する
バックアップスクリプトを毎晩2時に自動で走らせたい。手で起動し忘れをなくす。
ファイルをまとめて別マシンへ安全に送る
大量のファイルをサーバへコピーしたい。途中で切れても再開でき、無駄なく送りたい。
複数ファイルの文字列を一括置換する
設定ファイル群のドメイン名を旧から新へ全部置き換えたい。手作業では漏れる。
コマンドが見つからない:PATHを通す
入れたはずのツールが『command not found』。実体はあるのに呼べない。PATHを通したい。
WindowsでLinuxを始める(WSL2)
Linuxをやってみたいが、手元のPCはWindows1台だけ。仮想マシンを組む気力はない。今日のうちに「黒い画面」まで辿り着きたい。
手元のマシンでAIを動かす(ローカルLLM・Ollama)
クラウドに送りたくないデータでAIを使いたい。API料金を気にせず実験したい。自分のLinuxマシンでLLM(大規模言語モデル)を動かしてみた…
Claude Code(AIエージェント)をLinuxに入れる
ターミナルの中で動くAIエージェントを試したい。コードの修正・調査・定型作業を、対話しながら手伝わせたい。
GPUがLinuxから見えているか確認する
AIや動画処理でGPUを使いたい。そもそもLinuxからGPUが認識されているのか、ドライバは入っているのかを確かめたい。
自宅ファイルサーバ(NAS風)を立てる
家族の写真や動画を1か所に集めたい。WindowsからもスマホからもアクセスできるNAS風の置き場を、余ったPCやラズパイで作りたい。
大事なデータを毎晩自動バックアップする
撮りためた写真や作業フォルダを、外付けディスクへ毎晩自動で退避したい。手動バックアップは絶対に続かないと知っている。
LVMでディスクを無停止拡張する
本番サーバのデータ領域が残り1割を切った。サービスを止めずに、LVMの論理ボリュームを空き容量から広げたい。
ソフトウェアRAIDの健全性確認と故障ディスク交換
監視アラートで「RAIDがdegraded」と通知が来た。mdadmで組んだRAID1の状態を確かめ、壊れたディスクを安全に交換したい。
TLS証明書の期限確認と更新
「サイトの証明書がもうすぐ切れる」という通知が来た。実際の残り日数を確かめ、Let's Encryptの証明書を安全に更新したい。
自作スクリプトをsystemdサービス化する
手で起動していた自作の常駐スクリプトを、サーバ再起動後も自動で立ち上がり、落ちたら再起動される「ちゃんとしたサービス」にしたい。
nginxでリバースプロキシを立てる
ローカルの8080番で動くアプリを、nginx経由で80番から公開したい。クライアントの本来のIPアドレスもアプリに正しく伝えたい。
Dockerのディスク掃除
ビルドを繰り返すサーバでディスク残量の警告が出た。犯人がDockerのイメージやログの蓄積らしいので、安全に容量を取り戻したい。
落ちるコンテナのデバッグ
デプロイしたコンテナが起動直後に終了してしまう、あるいは動いているのに応答しない。原因をログと内部調査で特定したい。
消したコミット・ブランチの救出
reset --hardで消したはずのコミットが実は必要だった、あるいはマージ済みと勘違いしてブランチを削除してしまった。履歴から救出したい。
サーバが重い時の資源ボトルネック特定
「サーバが重い」と言われたが原因不明。CPU・メモリ・ディスクI/Oのどれが詰まっているのかを、定番ツールで順番に切り分けたい。
OOM Killerに殺された犯人と原因調査
夜間にアプリが突然消えていた。エラーログには何も無い。OOM Killer(メモリ枯渇時の強制終了)の仕業かを確かめ、再発を防ぎたい。
ゾンビプロセスの理解と掃除
psの一覧にdefunctという表示が並び始めた。ゾンビプロセスとは何か、放置してよいのか、どう掃除するのかを確かめたい。
通信を録って確かめる(tcpdump入門実務)
「アプリからAPIへの通信が届いていない気がする」。推測をやめて、実際にパケットが出ているか・返ってきているかを録画して確かめたい。
名前解決がおかしい時の切り分け
「特定のホスト名だけ繋がらない」「サーバによって引ける・引けないが違う」。DNSのどの段階で食い違っているのかを順番に切り分けたい。
ユーザの一括作成と初期設定
新人研修や新プロジェクトの立ち上げで、10人分のアカウントを同じ設計(グループ・初期パスワード・初回変更強制)で一括作成したい。
特定コマンドだけsudoを許可する安全な設計
運用メンバーに「nginxの再読み込みだけ」root権限で実行させたい。全権sudoは渡さず、必要最小限だけを許可したい。
アクセスログから状況を数える
サイトが急に重くなった。アクセスログから「どのIPが」「どのURLに」集中しているのかを、awkとuniqの定番パイプで即席集計したい。
rsyncで差分ミラーバックアップ
データ領域を毎晩バックアップサーバへ同期したい。2回目以降は差分だけ転送し、削除も反映される「完全な鏡」を安全に作りたい。
除外つきアーカイブと検証
アプリ一式を退避したいが、ログやキャッシュは含めたくない。除外条件つきでtarを作り、壊れていないか検分してから所定の場所へ展開したい。
カーネルパラメータの調整と恒久化
高負荷時に接続の取りこぼしが出るため、接続待ちキューの上限(somaxconn)を広げたい。試験的に変えて効果を見てから、再起動後も残る形にし…
時刻ずれの修正と時刻同期
ログの時刻が実時刻と数分ずれていて、障害調査で突き合わせができない。タイムゾーンの確認と時刻同期の立て直しを行いたい。
スワップ領域の追加
メモリ2GBの小さなVPSでビルドがOOMで落ちる。ディスク上にスワップファイルを作って一時退避先を確保し、再起動後も有効にしたい。
開いているポートの棚卸しと閉鎖
昔の検証で開けたポートが残っていないか不安になった。実際に待ち受けているポートとファイアウォールの許可設定を突き合わせ、不要な口を閉じたい。