バックエンド/インフラのためのLinuxコマンド最初の一歩

スポンサーリンク

本ページは、バックエンド/インフラの現場で「まず何をすれば状況が見えるか」を、迷いなく実行できる最短ルートにまとめた“橋渡し”となるページです。

閲覧者からの不具合報告、500エラー、レスポンス遅延、ポート競合、ディスク逼迫――そうした“よくある事象”を入口にして、状況を把握するためのコマンドと最小手順を一直線に提示します。深掘りの学習は後回しにし、まずは安全に現状把握と初動対応ができることを狙います。

対象は、Linux 運用に不安のあるバックエンドエンジニアの初学者や、日常的にサーバをさわる機会が出てきた開発者、あるいはインフラ担当に移りつつあるエンジニアです。SSH でサーバに入れる、sudo が使える、基本的なファイル操作は分かる――この程度を前提にしています。各セクションは「状況 → 使うコマンド → 最小手順 → 落とし穴 → 次の一歩」の順で構成し、必要になったら実務レシピやコマンド索引へリンクで橋渡しします。

読み進めるときは、まず自分のケースに近い“状況”を選び、示された最小手順どおりに事象を見える化してください。原因を一気に特定しようとせず、ログ・状態・疎通の三点から事実を積み上げるのが近道です。変更が必要になったときは影響範囲を先に見極め、取り返しのつく最小単位から手を付けます。できる限りステージングで再現し、--dry-run できる操作は必ず試し、作業前にロールバックの準備を整えておきましょう。実行した内容と結果は簡潔でよいので記録しておくと、次の一手と共有が速くなります。

ここは“全集”ではありません。必要十分なコマンドに絞り、現場で役立つ順に並べました。細かなオプションや派生テクニックは、本文中のリンクから実務レシピとコマンド索引へ進んでください。最短で「分かる・動かせる」に到達し、その先の「深く理解する」は次のページで積み上げる――それが bash道の橋渡しです。

対象読者・前提

このページは、Linux 運用の経験が浅い バックエンド/インフラ志望者・初学者、あるいは開発の延長でサーバに触れるようになった アプリケーションエンジニア を主な対象にしています。
前提としては、以下が最低限できる想定です。

  • SSH でサーバへログインできる(公開鍵認証の基本を理解している)
  • sudo を用いた権限昇格ができる(実行の意味を理解している)
  • cd / ls / cat / less / tail などの基礎コマンドに抵抗がない
  • 本番とステージングの違い、変更前のバックアップと記録の重要性を知っている

もし上記が不安なら、学習ハブ内の「Linux超入門」を先に確認してから進むと、ここでの“最小手順”が理解しやすくなります。

進め方(3ステップ)

  1. 状況を選ぶ
    下の「よくある状況」から、自分のケースに最も近いものを選びます。
  2. 最小手順で“見える化”
    状況に対応する“最小手順”を上から順に実行し、ログ/プロセス/疎通/資源のいずれで異常が起きているかを観測します。
  3. 橋渡しで深掘り
    原因の当たりがついたら、対応する 実務レシピコマンド索引 へ移動して詳細な選択肢や落とし穴回避策を確認します。必要に応じてステージングで再現し、ロールバック経路を確保してから修正に踏み込みます。

心構え(安全運用の基本)

  • 読む→測る→比べる:いきなり直さず、まずログと状態を“読む”。通常時との比較で異常を特定します。
  • 影響範囲の把握が先:再起動や設定変更は最小単位から。依存関係(DB/キュー/リバプロ)を先に確認。
  • 確実な退路:設定バックアップ・ダンプ・ロールバック手順を先に用意。--dry-run できる操作は必ず試す。
  • 記録と共有:打ったコマンドと結果を簡潔にメモ。次の一手とチーム共有が速くなります。

よくある状況から探す(橋渡しマップ)

1. デプロイ直後の動作確認

  • 使うコマンドsystemctl / journalctl / ps / ss
  • 最小手順
    1. サービス状態:systemctl status <svc>
    2. ログ確認:journalctl -u <svc> -n 200 -e
    3. プロセス確認:ps -ef | grep <app>
    4. ポート待受:ss -lntp | grep :<port>
  • 落とし穴:ユニット名の誤り、環境変数未読込、SELinux制御
  • 次の一歩:実務レシピ「デプロイ後の初動チェック」

2. API が重い・レスポンス遅延

  • 使うコマンドtop / vmstat / iostat / ss
  • 最小手順
    1. 負荷確認:top
    2. I/O 確認:iostat -x 1 5
    3. コネクション数:ss -s
  • 落とし穴:スパイクと恒常負荷の混同、I/O 待ちを CPU 負荷と誤解
  • 次の一歩:実務レシピ「高負荷の初動対応」

3. 500 エラーが出る

  • 使うコマンドjournalctl / tail / grep
  • 最小手順
    1. サービスログ:journalctl -u <svc> -n 200
    2. Web サーバログ:tail -f /var/log/nginx/error.log
    3. アプリログ検索:grep -iE "error|exception" app.log | tail
  • 落とし穴:片方のログしか見ない、設定差分の見落とし
  • 次の一歩:実務レシピ「500 の原因切り分け」

4. ポートが開かない/競合している

  • 使うコマンドss / lsof / systemctl
  • 最小手順
    1. 待受確認:ss -lntp | grep :<port>
    2. 使用プロセス確認:lsof -i :<port>
    3. サービス再起動:systemctl restart <svc>
  • 落とし穴:IPv4/IPv6 の違い、監視系プロセスの先占
  • 次の一歩:実務レシピ「ポート競合の解消」

5. ディスクがいっぱい

  • 使うコマンドdf / du / logrotate / lsof
  • 最小手順
    1. 使用率確認:df -h
    2. 容量探索:du -xh /var/log --max-depth=1 | sort -h
    3. ログローテート:logrotate -f /etc/logrotate.conf
    4. 削除済みファイル確認:lsof | grep deleted
  • 落とし穴:削除しても容量が戻らないケース
  • 次の一歩:実務レシピ「ディスク逼迫の初動」

6. 権限や所有権の問題

  • 使うコマンドls -l / namei -l / chown / chmod
  • 最小手順
    1. パス権限確認:namei -l /path/to/file
    2. 所有者変更:chown -R app:app /path
    3. 権限調整:chmod 640 file
  • 落とし穴:ディレクトリ実行権(x)の不足
  • 次の一歩:実務レシピ「権限エラーの対応」

7. サービスが落ちる/起動しない

  • 使うコマンドsystemctl / journalctl -xe
  • 最小手順
    1. 状態確認:systemctl status <svc>
    2. エラーログ:journalctl -u <svc> -xe
  • 落とし穴:作業ディレクトリや ExecStart の設定不整合
  • 次の一歩:実務レシピ「systemd ユニットの基本」

8. ネットワーク疎通の問題

  • 使うコマンドping / traceroute / curl / dig
  • 最小手順
    1. 到達確認:ping -c 4 host
    2. 経路確認:traceroute host
    3. HTTP 応答:curl -I https://host
    4. DNS 解決:dig host +short
  • 落とし穴:DNS キャッシュや FW 設定の見落とし
  • 次の一歩:実務レシピ「ネットワーク切り分け」

9. バックアップと復元

  • 使うコマンドtar / mysqldump / pg_dump / rsync
  • 最小手順
    1. 設定保存:tar -czf conf_$(date +%F).tgz /etc/...
    2. DB ダンプ:mysqldump --single-transaction
    3. 退避:rsync -av data backup:/path
  • 落とし穴:復元テストをしていない
  • 次の一歩:実務レシピ「夜間バックアップの自動化」

10. 定期実行・監視

  • 使うコマンドcrontab -e / at
  • 最小手順
    1. 定期実行設定:crontab -e
    2. 単発ジョブ登録:at now + 5 minutes
  • 落とし穴:環境変数未設定、PATH 問題
  • 次の一歩:実務レシピ「失敗検知メールの定型」

付録:最小ワンライナー集(コピー用)

ログ/サービス

直近のエラー行だけ確認する

journalctl -u <svc> -n 1000 --no-pager | grep -iE 'error|fail|exception' | tail

サービス状態をざっと見る

systemctl status <svc> --no-pager | tail -n +1

Nginx の直近エラーを追う

tail -F /var/log/nginx/error.log | grep --line-buffered -iE 'error|crit|alert'

プロセス/CPU/メモリ

CPU 使用率の上位を確認

ps -eo pid,comm,%cpu --sort=-%cpu | head -n 6

メモリ使用量の上位を確認

ps -eo pid,comm,%mem,rss --sort=-%mem | head -n 6

ゾンビプロセスの有無を調べる

ps aux | awk '$8 ~ /Z/ {print}'

ディスク/ファイル

ファイルシステムの使用率を確認

df -h | grep -v tmpfs

ディレクトリの容量トップ10を探す

du -xha /path | sort -h | tail -n 10

“削除済みオープンファイル”を検知

lsof | grep deleted

ネットワーク/疎通

80/443 の待受プロセスを確認

ss -lntp | egrep ':80|:443'

確立済み TCP コネクション数を数える

ss -ant state established | wc -l

DNS 解決結果を簡易確認

dig +short <host>

ポート競合の切り分け

特定ポートの使用プロセスを特定

lsof -i :<port>

LISTEN のみ抽出

ss -lntp | awk 'NR==1 || $1=="LISTEN"'

権限・所有権

パスを辿って権限を確認

namei -l /path/to/file

配下ディレクトリの実行権不足を検知

find /path -type d ! -perm -u=x -ls

バックアップ/復元の最小セット

設定のスナップショットを取得

tar -czf etc_nginx_$(date +%F).tgz /etc/nginx

MySQL を論理バックアップ

mysqldump --single-transaction --routines --triggers <db> > dump_$(date +%F).sql

PostgreSQL をカスタム書式でダンプ

pg_dump -Fc <db> > dump_$(date +%F).dump

リモートへ退避

rsync -avz /path user@backup:/backup/path

監視/通知(例)

エラーログ件数があればメール通知(mailx 想定)

c=$(grep -ci 'error' /var/log/nginx/error.log); [ "$c" -gt 0 ] && echo "$c errors" | mail -s 'nginx errors' you@example.com

プレースホルダ

  • <svc>:systemd ユニット名
  • <port>:ポート番号
  • <host>:ホスト名/FQDN
  • <db>:データベース名

本番適用前にステージングで試験し、必要に応じて --dry-run やバックアップを先に準備してください。

次の学習(内部リンク想定)

学びを“実務”へつなぐ最短ルート

独学で積み上げた「わかった」を、仕事で使える「できる」へ。
学習ハブの内容を踏まえて、実務に直結する学習設計・添削・質問環境を整えたい人は、下記のページで具体的な進め方を確認してください。

スポンサーリンク
Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする