運用業務で使う最低限押さえておきたいLinuxコマンド_ps/topコマンド編
はじめに:「コマンド打てない」の恐怖、経験ありませんか?
「あれ、このコマンド、どう打つんだっけ...」
監視オペレーターから運用保守の現場にジョインした初日、私はターミナルの前で完全にフリーズしました。監視ツールのアラートは読めるのに、いざサーバーにログインして原因調査をしようとすると、手が動かない。先輩から「とりあえずプロセス確認しといて」と言われても、何をどう確認すればいいのか分からず、冷や汗が止まりませんでした。
こんにちは、ハンズオンラボ運営メンバーのわたるです。インフラエンジニア10年目ですが、監視オペレーター2年、運用・保守1年を経て、ようやく設計・構築の現場に立てるようになりました。今振り返ると、最初の3ヶ月で最低限のLinuxコマンドを押さえていれば、もっとスムーズに成長できたなと感じています。
この記事では、運用の現場で「これだけは押さえておきたい」ps/topコマンドとそのオプションを、実践的な視点で解説します。IT業界3年未満のエンジニアの方、特にこれから運用保守の現場に入る方に向けて、私の失敗談も交えながらお伝えします。
目次
- なぜps/topコマンドが重要なのか
- psコマンド:プロセスの「スナップショット」を撮る
- topコマンド:システムを「リアルタイム監視」する
- 実践シーン別:コマンド活用例
- まとめ:「最低限」から始めよう
なぜps/topコマンドが重要なのか
運用の現場で求められる「速さ」
運用保守の現場では、アラートが鳴った瞬間から時間との勝負が始まります。先輩から「プロセス確認して」「CPU使用率見て」と指示が飛んできたとき、基本コマンドを知らないと完全に手が止まります。
私が新人の頃、夜間対応でWebサーバーのレスポンスが遅延するインシデントが発生しました。先輩から「topでプロセス見て」と言われ、コマンドは知っていたものの、表示された大量の情報のどこを見ればいいのか分からず、結局5分以上フリーズ。その間、先輩は隣で焦って待っている...という最悪の状況を経験しました。
「使えないやつ認定」を避けるために
厳しい言い方かもしれませんが、運用の現場では基本コマンドが使えないと即座に「使えないやつ」認定されてしまいます。特にps/topコマンドは、プロセス監視の基本中の基本。オプションを含めて使いこなせると、周囲からの信頼度が一気に上がります。
もちろん、最初から完璧である必要はありません。でも、「最低限これだけは」というコマンドとオプションを押さえておくことで、現場でのストレスは大きく軽減できます。
psコマンド:プロセスの「スナップショット」を撮る
psコマンドとは?
psコマンド(Process Status)は、現在実行中のプロセス情報を表示するコマンドです。topコマンドとの違いは、「その瞬間のスナップショット」を見る点。リアルタイムで更新されないので、ログに残したり、比較したりする際に便利です。
基本の使い方
# 最もシンプルな実行
$ ps
# 自分が実行しているプロセスのみ表示される
PID TTY TIME CMD
1234 pts/0 00:00:00 bash
5678 pts/0 00:00:00 ps
これだけだと情報が少なすぎて実務では使えません。ここからがオプションの出番です。
【重要】ps コマンド主要オプション一覧
運用の現場で頻繁に使うオプションをインデックス形式でまとめました。
■ よく使う組み合わせ
| コマンド | 効果 |
|---|---|
ps aux |
全ユーザーの全プロセスを詳細表示(BSD形式) |
ps -ef |
全ユーザーの全プロセスを詳細表示(UNIX形式) |
ps -u ユーザー名 |
特定ユーザーのプロセスのみ表示 |
ps -p PID |
特定のプロセスIDの情報を表示 |
ps -C コマンド名 |
特定のコマンド名でプロセスを絞り込み |
■ 個別オプション詳細
| オプション | 効果 | 使用例 |
|---|---|---|
a |
全ユーザーのプロセスを表示 | ps a |
u |
CPU/メモリ使用率など詳細情報を表示 | ps u |
x |
制御端末のないプロセス(デーモンなど)も表示 | ps x |
-e |
全プロセスを表示(= -A) |
ps -e |
-f |
完全なフォーマットで表示(親プロセスID含む) | ps -ef |
-l |
長いフォーマットで詳細表示 | ps -l |
-u ユーザー名 |
特定ユーザーのプロセスのみ | ps -u apache |
-p PID |
特定のプロセスIDのみ表示 | ps -p 1234 |
-C コマンド名 |
特定コマンド名のプロセスのみ | ps -C httpd |
--sort=列名 |
指定した列でソート | ps aux --sort=-%cpu |
■ 出力項目の意味
| 項目 | 意味 |
|---|---|
PID |
プロセスID |
PPID |
親プロセスID |
USER |
プロセス実行ユーザー |
%CPU |
CPU使用率 |
%MEM |
メモリ使用率 |
VSZ |
仮想メモリサイズ(KB) |
RSS |
物理メモリ使用量(KB) |
TTY |
制御端末(? はデーモン) |
STAT |
プロセスの状態(R=実行中、S=スリープ、Z=ゾンビなど) |
START |
プロセス開始時刻 |
TIME |
累積CPU時間 |
COMMAND |
実行コマンド |
実践例:CPU使用率順に表示
# CPU使用率が高い順にトップ10を表示
$ ps aux --sort=-%cpu | head -11
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
apache 1234 45.2 3.1 456789 32145 ? R 10:23 5:32 /usr/sbin/httpd
mysql 5678 23.8 8.5 789012 87654 ? S 09:15 12:45 /usr/sbin/mysqld
ポイント: --sort=-%cpu の「-」は降順(高い順)を意味します。head -11 は先頭11行(ヘッダー+10プロセス)を表示。
実践例:特定プロセスの監視
# Apache(httpd)プロセスのみ表示
$ ps -C httpd -o pid,user,%cpu,%mem,command
PID USER %CPU %MEM COMMAND
1234 apache 12.3 2.1 /usr/sbin/httpd -DFOREGROUND
1235 apache 8.7 2.0 /usr/sbin/httpd -DFOREGROUND
ポイント: -o オプションで表示項目をカスタマイズできます。
topコマンド:システムを「リアルタイム監視」する
topコマンドとは?
topコマンドは、システムのプロセス、CPU、メモリ使用状況をリアルタイムで監視するコマンドです。デフォルトで2秒ごとに更新され、CPU使用率の高い順にプロセスが表示されます。
サーバーが重い原因を特定する際、まず最初に叩くのがこのコマンドです。
基本の使い方
# topコマンドを実行
$ top
# 画面がリアルタイムで更新される
# 終了するには「q」キーを押す
実行すると、画面が以下のように表示されます:
top - 10:23:45 up 15 days, 3:42, 2 users, load average: 0.52, 0.48, 0.45
Tasks: 183 total, 2 running, 181 sleeping, 0 stopped, 0 zombie
%Cpu(s): 12.5 us, 3.2 sy, 0.0 ni, 84.0 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 7926.5 total, 456.2 free, 4521.8 used, 2948.5 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 2987.3 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 apache 20 0 456788 32145 12345 R 45.2 3.1 5:32.67 httpd
5678 mysql 20 0 789012 87654 23456 S 23.8 8.5 12:45.23 mysqld
【重要】top コマンド主要オプション一覧
■ コマンドライン起動オプション
| オプション | 効果 | 使用例 |
|---|---|---|
-d 秒数 |
更新間隔を指定(デフォルト:2秒) |
top -d 1 (1秒ごとに更新) |
-p PID |
特定のプロセスIDのみ監視 | top -p 1234 |
-u ユーザー名 |
特定ユーザーのプロセスのみ表示 | top -u apache |
-n 回数 |
指定回数更新したら終了 |
top -n 5 (5回更新後終了) |
-b |
バッチモード(非対話モード)で実行 | top -b -n 1 > top.log |
-H |
スレッド単位で表示 | top -H |
■ top起動後の対話キー(実行中に押すキー)
| キー | 効果 |
|---|---|
Shift + p |
CPU使用率順にソート(デフォルト) |
Shift + m |
メモリ使用率順にソート |
Shift + t |
実行時間(TIME+)順にソート |
k |
プロセスをキル(PID入力→シグナル入力) |
u |
特定ユーザーのプロセスのみ表示(ユーザー名入力) |
c |
COMMAND表示をフルパス⇔コマンド名で切替 |
1 |
CPU毎の使用率を表示(マルチコアの場合) |
h |
ヘルプ表示 |
q |
終了 |
d |
更新間隔を変更(秒数入力) |
f |
表示フィールドの選択・並び替え |
z |
カラー表示のON/OFF |
x |
ソート列をハイライト表示 |
画面の見方:重要な指標
■ 上部サマリー情報
top - 10:23:45 up 15 days, 3:42, 2 users, load average: 0.52, 0.48, 0.45
| 項目 | 意味 |
|---|---|
10:23:45 |
現在時刻 |
up 15 days |
システム稼働時間 |
2 users |
ログイン中のユーザー数 |
load average |
ロードアベレージ(1分、5分、15分平均) ← 重要! |
ロードアベレージの目安: CPUコア数と同じか下回っていれば正常。例えば4コアCPUなら4.0以下が目安。
%Cpu(s): 12.5 us, 3.2 sy, 0.0 ni, 84.0 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
| 項目 | 意味 |
|---|---|
us (user) |
ユーザープロセスのCPU使用率 |
sy (system) |
システム(カーネル)のCPU使用率 |
id (idle) |
アイドル(待機)状態の割合 ← 高いほど余裕がある |
wa (iowait) |
I/O待ち時間 ← 高いとディスクが遅い |
MiB Mem : 7926.5 total, 456.2 free, 4521.8 used, 2948.5 buff/cache
| 項目 | 意味 |
|---|---|
total |
総メモリ量 |
free |
空きメモリ |
used |
使用中メモリ |
buff/cache |
キャッシュとして使用中 |
ポイント: freeが少なくても、buff/cacheがあれば大丈夫。Linuxは空きメモリを積極的にキャッシュに使います。
実践例:メモリ使用率順に確認
# topを起動後、Shift + m を押す
$ top
# メモリ使用率が高い順に並び替わる
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5678 mysql 20 0 789012 87654 23456 S 23.8 8.5 12:45.23 mysqld
1234 apache 20 0 456788 32145 12345 R 12.2 3.1 5:32.67 httpd
使いどころ: 「メモリ不足でサーバーが重い」という報告を受けたとき、まずこれで犯人を特定します。
実践例:特定ユーザーのプロセスのみ監視
# apacheユーザーのプロセスのみ監視
$ top -u apache
# または、top起動後に「u」キーを押してユーザー名入力
使いどころ: Webサーバーが重い際、Apacheプロセスだけに絞って監視したいとき。
実践シーン別:コマンド活用例
シーン1:「サーバーが重い!」と連絡が来た
対応フロー:
- まずtopでリアルタイム確認
$ top
# CPU使用率、メモリ使用率を確認
# Shift + p でCPU順、Shift + m でメモリ順に切替
- 怪しいプロセスを発見したらpsで詳細確認
$ ps -p 1234 -o pid,user,%cpu,%mem,start,command
# プロセスIDが1234の詳細を確認
- そのプロセスが何を実行しているか確認
$ ps -ef | grep 1234
# 親プロセスや起動パラメータを確認
シーン2:「Apacheプロセスが多すぎる」と指摘された
# Apacheプロセスの数をカウント
$ ps -C httpd --no-headers | wc -l
45
# CPU使用率順に並べて確認
$ ps -C httpd -o pid,user,%cpu,%mem,start,command --sort=-%cpu
判断: プロセス数が設定値(MaxRequestWorkers等)と合っているか確認。異常に多い場合は設定ミスやハング状態の可能性。
シーン3:夜間バッチ処理の監視
# バッチ処理を実行しながら、別ターミナルでリアルタイム監視
$ top -d 1 -u batchuser
# または、1秒ごとに10回更新してログに保存
$ top -b -d 1 -n 10 -u batchuser > batch_monitor.log
使いどころ: 夜間バッチが正常に動いているか、リソースを圧迫していないかをログに残して確認。
まとめ:「最低限」から始めよう
この記事で押さえてほしい3つのポイント
-
ps/topコマンドは運用の現場での必須スキル
プロセス監視ができないと、トラブル対応で完全に手が止まります。「使えないやつ認定」を避けるためにも、最低限のオプションは覚えましょう。 -
最低限のコマンドを知るだけでストレスが激減する
ps aux、ps -ef、topの3つだけでも使いこなせれば、日常業務の8割はカバーできます。完璧を目指さず、まずは「最低限」から始めてください。 -
ハンズオンで実際に手を動かすことが最短ルート
この記事を読んだだけでは身につきません。実際にサーバー(仮想環境でOK)で何度も打って、体に覚え込ませることが重要です。
一緒に学びませんか?
ハンズオンラボでは、こうした「現場で使えるLinuxスキル」を実際に手を動かして学べる環境を提供しています。
- 🖥️ 実機演習環境: 本物のLinuxサーバーで練習できる
- 👥 仲間と一緒: もくもく会で同じ目標を持つ仲間と学べる
- 📚 初心者向けコンテンツ: 基礎から段階的にステップアップ
- 🎯 現場目線: 資格勉強では学べない「実務で本当に使うスキル」に特化
「コマンドが打てなくて先輩に怒られた...」
「マニュアルを見ても実際にどう使うか分からない...」
そんな悩みを持っているなら、ぜひ一度ハンズオンラボの活動を覗いてみてください。一緒に「できる」を増やしていきましょう!
📍 connpassページ: https://zeki-chan-lab.connpass.com/
関連リンク
- ハンズオンラボ connpassグループ
- 運用で使えるpsコマンドの便利な使い方 - 株式会社ビヨンド
- 【運用者必見】Linuxサーバーの「top」コマンドの使い方を解説します
- 【 ps 】コマンド――実行中のプロセスを一覧表示する - ITmedia
- 【 top 】コマンド――実行中のプロセスをリアルタイムで表示する - ITmedia