0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

運用業務で使う最低限押さえておきたいLinuxコマンドps/top編

0
Posted at

運用業務で使う最低限押さえておきたいLinuxコマンド_ps/topコマンド編

はじめに:「コマンド打てない」の恐怖、経験ありませんか?

「あれ、このコマンド、どう打つんだっけ...」

監視オペレーターから運用保守の現場にジョインした初日、私はターミナルの前で完全にフリーズしました。監視ツールのアラートは読めるのに、いざサーバーにログインして原因調査をしようとすると、手が動かない。先輩から「とりあえずプロセス確認しといて」と言われても、何をどう確認すればいいのか分からず、冷や汗が止まりませんでした。

こんにちは、ハンズオンラボ運営メンバーのわたるです。インフラエンジニア10年目ですが、監視オペレーター2年、運用・保守1年を経て、ようやく設計・構築の現場に立てるようになりました。今振り返ると、最初の3ヶ月で最低限のLinuxコマンドを押さえていれば、もっとスムーズに成長できたなと感じています。

この記事では、運用の現場で「これだけは押さえておきたい」ps/topコマンドとそのオプションを、実践的な視点で解説します。IT業界3年未満のエンジニアの方、特にこれから運用保守の現場に入る方に向けて、私の失敗談も交えながらお伝えします。


目次

  1. なぜps/topコマンドが重要なのか
  2. psコマンド:プロセスの「スナップショット」を撮る
  3. topコマンド:システムを「リアルタイム監視」する
  4. 実践シーン別:コマンド活用例
  5. まとめ:「最低限」から始めよう

なぜ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:「サーバーが重い!」と連絡が来た

対応フロー:

  1. まずtopでリアルタイム確認
$ top
# CPU使用率、メモリ使用率を確認
# Shift + p でCPU順、Shift + m でメモリ順に切替
  1. 怪しいプロセスを発見したらpsで詳細確認
$ ps -p 1234 -o pid,user,%cpu,%mem,start,command
# プロセスIDが1234の詳細を確認
  1. そのプロセスが何を実行しているか確認
$ 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つのポイント

  1. ps/topコマンドは運用の現場での必須スキル
    プロセス監視ができないと、トラブル対応で完全に手が止まります。「使えないやつ認定」を避けるためにも、最低限のオプションは覚えましょう。

  2. 最低限のコマンドを知るだけでストレスが激減する
    ps auxps -eftopの3つだけでも使いこなせれば、日常業務の8割はカバーできます。完璧を目指さず、まずは「最低限」から始めてください。

  3. ハンズオンで実際に手を動かすことが最短ルート
    この記事を読んだだけでは身につきません。実際にサーバー(仮想環境でOK)で何度も打って、体に覚え込ませることが重要です。


一緒に学びませんか?

ハンズオンラボでは、こうした「現場で使えるLinuxスキル」を実際に手を動かして学べる環境を提供しています。

  • 🖥️ 実機演習環境: 本物のLinuxサーバーで練習できる
  • 👥 仲間と一緒: もくもく会で同じ目標を持つ仲間と学べる
  • 📚 初心者向けコンテンツ: 基礎から段階的にステップアップ
  • 🎯 現場目線: 資格勉強では学べない「実務で本当に使うスキル」に特化

「コマンドが打てなくて先輩に怒られた...」
「マニュアルを見ても実際にどう使うか分からない...」

そんな悩みを持っているなら、ぜひ一度ハンズオンラボの活動を覗いてみてください。一緒に「できる」を増やしていきましょう!

📍 connpassページ: https://zeki-chan-lab.connpass.com/


関連リンク


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?