はじめに
フロントエンド・バックエンドを問わず、モダンなWeb開発において、Linuxのターミナル(シェル)でのコマンド操作スキルは重要です。
Webサーバー(AWS, Cloudflare, VPSなど)の運用、Dockerコンテナ内部でのデバッグ、CI/CDパイプライン(GitHub Actionsなど)のスクリプト記述など、多くの局面でコマンドライン操作が求められます。
本記事では、特にWeb開発者が日常的に遭遇するタスク(エラーログの調査、ファイル操作、プロセス監視など)に焦点を当て、実用的なLinuxコマンドと、それらを組み合わせる パイプライン(|) の活用方法を解説します。
1. ファイルとログの効率的な検索・調査
Webサーバーの障害対応時など、巨大なテキストログファイルから特定のエラーメッセージやアクセスIPを迅速に探し出すスキルが重要になります。
① grep(文字列検索)
ファイルの中から特定のパターンに一致する行を検索します。
# error.logの中から「Fatal」という文字を検索する(大文字小文字を区別しない -i)
grep -i "fatal" /var/log/nginx/error.log
# 指定したディレクトリ配下のすべてのファイルから再帰的(-r)に検索する
grep -r "API_KEY" ./src/
② find(ファイル・ディレクトリ検索)
ファイル名や更新日時を条件にファイルを検索します。
# カレントディレクトリ配下から「.png」で終わるファイルを検索する
find . -name "*.png"
# 直近24時間以内に更新されたファイルを検索する
find . -mtime -1
2. サーバーリソースとプロセスの監視
サーバーの動作が重い、あるいはメモリリークが疑われる場合に活躍するコマンド群です。
① top / htop(システム状態のリアルタイム監視)
CPU使用率、メモリ使用量、実行中のプロセス一覧をリアルタイムで表示します。
htopコマンドがインストールされている場合は、CPUのコアごとの使用状況がグラフィカルに表示されるため、こちらが推奨されます。
② df / du(ディスク容量の確認)
ディスクの空き容量を確認します。
# ディスク全体の空き容量を分かりやすい単位(-h: GBやMB)で表示する
df -h
# 特定のディレクトリ(例: node_modules)の合計サイズを表示する
du -sh ./node_modules/
③ lsof / netstat(ポートの使用状況確認)
「ポート3000番がすでに使用されています」というエラーでローカルサーバーが起動しない際、どのプロセスがポートを占有しているかを特定します。
# 3000番ポートをリスンしているプロセス(PID)を特定する
lsof -i :3000
3. パイプライン(|)とリダイレクトを活用したコマンドの連結
Linuxシェルの真の強みは、**「1つのコマンドの出力結果(標準出力)を、パイプ記号 | を使って次のコマンドの入力として渡す」**ことができる点にあります。
実用例A: アクセスログからユニークなIPの数を集計する
Nginxなどのアクセスログから、アクセス数が多い順にIPアドレスをソートして表示します。
# ログファイルからIPアドレス(最初のカラム)を抽出してソートし、重複カウントした上で数が多い順に並べる
cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -n 10
awk '{print $1}': 各行の最初のスペース区切り文字(IPアドレス)だけを抜き出す。sort: データを並び替える(uniqの前提条件)。uniq -c: 重複する行をまとめ、それぞれの出現回数をカウントして左端に付与する。sort -nr: カウント数を数値(-n)として逆順(-r: 降順)に並び替える。head -n 10: 上位10件だけを表示する。
実用例B: ポートを占有しているプロセスを強制終了する
Web開発でポートが競合した際、プロセスIDを検索して一発でキルします。
# 3000番ポートを占有しているプロセスのPIDを取得し、killコマンドに渡す
kill -9 $(lsof -t -i :3000)
まとめ
LinuxのCLIコマンドを使いこなせるようになると、GUIツールを立ち上げたり手動でファイルを1つずつ確認する手間に比べて、作業スピードが数倍〜数十倍に向上します。
grepとfindでファイルやエラーログの検索効率を最大化するhtop、df、lsofでサーバーやローカルPCのリソーストラブルを瞬時に解決する- コマンド単体ではなく、パイプライン(
|)で繋いで独自のログ解析処理を組み立てる
ターミナルでの操作を習慣化し、開発・インフラ運用の効率化を推進していきましょう。
