SJ blog
devops
A

信頼度ランク

S 公式ソース確認済み
A 成功実績多数・失敗例少数
B 賛否両論
C 動作未確認・セキュリティリスク高
Z 個人所感

Linuxコマンドで覚えておきたいワンライナー5選

日常的なサーバー管理・開発作業で役立つLinuxワンライナーを5つ厳選。ポート調査・ログ監視・プロセス確認・curl計測・awk集計をすぐに使えるかたちで解説します。

一言結論

lsof・ss・curl -wとawk集計の4コマンドを身につけるだけで、ポート競合・パフォーマンス調査・API計測といった現場の定番問題を追加ツールなしで即解決できる。

1. ポートを使っているプロセスを調べる

# ポート 3000 を使っているプロセスを確認
lsof -i :3000

# または ss で(lsof より高速)
ss -tlnp | grep :3000

# 出力例:
# LISTEN  0  128  *:3000  *:*  users:(("node",pid=1234,fd=23))

pid がわかったら kill 1234 で終了できる。「なぜかポートが空かない」問題の定番診断コマンド。

2. CPUとメモリを食っているプロセスを確認する

# CPU使用量の多い順にトップ10を表示
ps aux --sort=-%cpu | head -11

# メモリ使用量の多い順
ps aux --sort=-%mem | head -11

# リアルタイム更新(htop が入っていない場合)
watch -n 2 "ps aux --sort=-%cpu | head -11"

コンテナ内や最小構成のLinuxでは htop が入っていないことが多い。ps はどこでも使える。

3. エラーログをリアルタイムで監視する

# ログを追いながらエラーだけを抽出
tail -f /var/log/app.log | grep --line-buffered "ERROR\|WARN"

# 複数ファイルを同時に監視
tail -f /var/log/nginx/error.log /var/log/app.log

# タイムスタンプ付きで表示(ログに含まれていない場合)
tail -f app.log | while read line; do echo "$(date '+%H:%M:%S') $line"; done

--line-buffered を付けないと grep がバッファリングして出力が遅れる。

4. curl でAPIのレスポンスタイムを計測する

curl -o /dev/null -s -w \
  "DNS: %{time_namelookup}s\nConnect: %{time_connect}s\nTTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n" \
  https://api.example.com/health
DNS: 0.003s
Connect: 0.012s
TTFB: 0.087s     ← サーバーが応答を開始するまで
Total: 0.092s
  • TTFB が長い → サーバー処理が遅い
  • Connect が長い → ネットワーク遅延またはTLS handshake
  • DNS が長い → DNSリゾルバの問題

5. Nginxアクセスログでステータスコードを集計する

# ステータスコード別の集計
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn

# 出力例:
#  9842 200
#   231 304
#    87 404
#    12 500

# エンドポイント別に集計(上位10件)
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10

# IPアドレス別のアクセス数(DDoS調査など)
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20

$9 はステータスコード列、$7 はURIパス列(Nginxのデフォルトログ形式の場合)。


参考: The Linux Command Line / tldr pages