サルでもわかる Linux コマンド【インフラ・サーバー管理編】

「あの操作、コマンド何だっけ?」を即解決するユースケース別リファレンス。
サーバー管理・ログ解析・ネットワーク調査など、インフラ現場でよく遭遇する場面に絞って整理した。


🔥 サーバーが重い・応答しない

CPU・メモリを瞬時に確認したい

# リアルタイム監視(1秒更新)
top

# もっと見やすい版(要インストール)
htop

# CPU使用率の高いプロセス TOP10
ps aux --sort=-%cpu | head -11

# メモリ使用率の高いプロセス TOP10
ps aux --sort=-%mem | head -11

ロードアベレージを確認したい

uptime
# 出力例: 14:23:01 up 12 days, load average: 0.52, 0.48, 0.45
#                                              ↑1分  ↑5分  ↑15分
# コア数を超えたらヤバい
nproc  # CPUコア数を確認

ディスクが満杯かもしれない

# ファイルシステムごとの使用量
df -h

# ディレクトリごとのサイズ(重い順)
du -sh /* 2>/dev/null | sort -rh | head -20

# 特定ディレクトリを深掘り
du -sh /var/log/* | sort -rh | head -10

プロセスを強制終了したい

# プロセス名で検索
pgrep -la nginx

# PIDを指定して終了(穏やか)
kill <PID>

# 強制終了
kill -9 <PID>

# プロセス名で一括終了
pkill nginx

📋 ログを調査したい

エラーだけ抽出したい

# ERROR / WARN を含む行だけ表示
grep -i "error\|warn" /var/log/syslog

# 直近100行 + エラー抽出
tail -100 /var/log/syslog | grep -i error

# 特定日時のログだけ抽出(journald)
journalctl --since "2026-06-09 10:00" --until "2026-06-09 11:00"

# 特定サービスのログ
journalctl -u nginx --since today

リアルタイムでログを流し見したい

# ファイルを末尾から追いかける
tail -f /var/log/syslog

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

# エラーだけリアルタイムで見たい
tail -f /var/log/syslog | grep -i error

ログから頻出パターンを集計したい

# アクセスログのIPアドレス別集計(多い順)
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20

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

# 特定の文字列が何回出現するか
grep -c "connection refused" /var/log/syslog

圧縮ログを解凍せずに見たい

# .gz ファイルをそのまま grep
zgrep "error" /var/log/syslog.2.gz

# .gz ファイルをそのまま表示
zcat /var/log/syslog.2.gz | tail -50

🌐 ネットワークを調査したい

疎通・名前解決を確認したい

# 疎通確認(4回)
ping -c 4 192.168.1.1

# DNS 名前解決確認
dig google.com
nslookup google.com

# 経路確認
traceroute 8.8.8.8        # Linux
# mtr でリアルタイム経路監視
mtr 8.8.8.8

ポートが開いているか確認したい

# リッスン中のポート一覧
ss -tulnp

# 特定ポートの確認
ss -tulnp | grep :80

# 外部からポート確認(nc / nmap)
nc -zv 192.168.1.10 22
nmap -p 22,80,443 192.168.1.10

通信量・接続状態を見たい

# 確立中の TCP 接続
ss -tnp state established

# CLOSE_WAIT が溜まっていないか確認
ss -tan | awk '{print $1}' | sort | uniq -c | sort -rn

# インターフェースごとの通信量(リアルタイム)
iftop -i eth0      # 要インストール

IPアドレス・MACアドレスを確認したい

# IPアドレス一覧
ip a

# MACアドレス確認
ip link show

# ARP テーブル(IPとMACの対応)
ip neigh

# デフォルトゲートウェイ
ip route | grep default

📁 ファイル・ディレクトリ操作

ファイルを素早く探したい

# ファイル名で検索
find / -name "nginx.conf" 2>/dev/null

# 特定ディレクトリ以下を検索
find /etc -name "*.conf"

# 更新日時が新しいファイルを探す(直近24時間)
find /var/log -mtime -1 -type f

# ファイル内容で検索(再帰)
grep -r "listen 80" /etc/nginx/

ファイルの内容を素早く確認したい

# 先頭20行
head -20 /etc/nginx/nginx.conf

# 末尾20行
tail -20 /etc/nginx/nginx.conf

# 行番号付きで全表示
cat -n /etc/nginx/nginx.conf

# ページャで閲覧(/でキーワード検索可能)
less /var/log/syslog

ファイルの差分を見たい

# 2ファイルの差分
diff before.conf after.conf

# 見やすい横並び表示
diff -y before.conf after.conf

# バックアップと現在の設定を比較
diff /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

🔧 サービス・プロセス管理

サービスを操作したい

# サービスの状態確認
systemctl status nginx

# 起動 / 停止 / 再起動
systemctl start nginx
systemctl stop nginx
systemctl restart nginx

# 設定リロード(ダウンタイムなし)
systemctl reload nginx

# 自動起動の有効化 / 無効化
systemctl enable nginx
systemctl disable nginx

# 失敗しているサービス一覧
systemctl --failed

サービスが起動しない原因を調べたい

# 詳細なステータスとログ
systemctl status nginx -l

# 直近のエラーログ
journalctl -u nginx -n 50 --no-pager

# 設定ファイルの文法チェック
nginx -t
apachectl configtest

👤 ユーザー・権限管理

ファイルの権限を変えたい

# 権限の確認
ls -la /etc/nginx/

# オーナー変更
chown nginx:nginx /var/www/html/

# パーミッション変更(数値指定)
chmod 644 /etc/nginx/nginx.conf   # rw-r--r--
chmod 755 /var/www/html/          # rwxr-xr-x

# ディレクトリ以下すべてに適用
chmod -R 755 /var/www/html/

別ユーザーで操作したい

# root に切り替え
sudo su -

# 特定ユーザーに切り替え
su - nginx

# 1コマンドだけ root で実行
sudo systemctl restart nginx

📦 パッケージ管理

ソフトウェアをインストール・更新したい

# RHEL / Rocky / AlmaLinux 系
dnf install nginx
dnf update
dnf remove nginx

# Ubuntu / Debian 系
apt update && apt install nginx
apt upgrade
apt remove nginx

# インストール済みパッケージ確認
rpm -qa | grep nginx      # RHEL系
dpkg -l | grep nginx      # Debian系

🛠️ 便利な組み合わせ技(パイプ活用)

# ログからエラー行を抽出して件数カウント
grep -i error /var/log/syslog | wc -l

# CPU使用率95%超えのプロセスを抽出
ps aux | awk '$3 > 95 {print $0}'

# 特定ポートに接続しているIPを一覧表示
ss -tnp | grep :443 | awk '{print $5}' | cut -d: -f1 | sort | uniq

# 直近1時間のsyslogエラーを別ファイルに保存
journalctl --since "1 hour ago" | grep -i error > /tmp/errors_$(date +%Y%m%d_%H%M).log

# ディスク使用量を監視して80%超えたらアラート出力
df -h | awk 'NR>1 && int($5) > 80 {print "⚠ 警告: "$6" が "$5" 使用中"}'

📌 とっさに使えるワンライナー集

やりたいこと コマンド
今のサーバー時刻確認 date
稼働時間確認 uptime
ホスト名確認 hostname -f
OS バージョン確認 cat /etc/os-release
カーネルバージョン確認 uname -r
開いているファイル数確認 lsof \| wc -l
コマンド履歴検索 Ctrl+R → キーワード入力
直前のコマンドを root で再実行 sudo !!
直前のコマンドの一部を置換して再実行 ^old^new
コマンドの場所を確認 which nginx
コマンドの詳細確認 man nginx または nginx --help

まとめ:場面別クイックリファレンス

状況 まず打つコマンド
サーバーが重い topdf -h
サービスが落ちた systemctl status <サービス>
ログを追いたい journalctl -u <サービス> -f
ネット繋がらない pingip routedig
ディスクが満杯 df -hdu -sh /var/log/*
ポートが開かない ss -tulnp \| grep <ポート>
ファイルが見つからない find / -name "<ファイル名>"

【免責事項:コマンド実行時の注意】
本記事で紹介するコマンドは、システムの設定変更やデータの削除など、影響範囲が広いものを含みます。実行前に必ず内容を確認し、重要なデータはバックアップをとった上で、ご自身の責任において操作を行ってください。誤った操作によるシステムトラブルやデータ消失等について、当方は一切の責任を負いかねます。