読者です 読者をやめる 読者になる 読者になる

Carpe Diem

備忘録。https://github.com/jun06t

覚えておくと便利なコマンド[top&free]

Unix・Linuxコマンド
サーバではアクセスやモジュールによる負担も考えなければいけません。 メモリ、CPUなどの負担をチェックできるコマンドとして便利なのがtop、free コマンドです。 どちらもUnix環境であればはじめから入っています。 ◆free の使い方 free はメモリの使用状況を確認できます。 $ free              total       used       free     shared    buffers     cached Mem:        192572     190944       1628      54912      20112     126848 -/+ buffers/cache:      43984     148588 Swap:        96384          0      96384 こんな感じに表示されると思います。一見「free」の項目が1628 と少なくて「あれ?ヤバイ?」と勘違いしそうですが、実際の空き容量はfree+buffers+cached となります。つまりこの場合 free+buffers+cached = 1628+20112+126848 = 148588 となります。まだまだ十分あることがわかりますね。 Linuxでは、各プロセスにメモリを割り振った残りをバッファ(buffer)とキャッシュ(cache)に利用してディスク入出力の負荷を減らしています。そのためfree コマンド等で見える残りメモリ-(free)は 1M 程度の瞬間的な使いまわしに対処する程度しか残っていない事が多いのです。 ◆top の使い方 top は各プロセスに対してメモリやCPUなどの詳細情報がわかります。ただ情報量が多すぎて一見使いづらいです。 $ top top - 10:47:43 up 83 days,  1:35,  1 user,  load average: 0.26, 0.45, 0.49 Tasks:  65 total,   1 running,  64 sleeping,   0 stopped,   0 zombie Cpu(s):  1.0% us,  0.3% sy,  0.0% ni, 98.7% id,  0.0% wa,  0.0% hi,  0.0% si Mem:    127240k total,   124732k used,     2508k free,     2644k buffers Swap:  1028152k total,   169640k used,   858512k free,    19112k cached   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND Windowsでのタスクマネージャ表示時のプロセスに近いです。 なので各項目順にソートさえできれば、メモリやCPUなどそれぞれどのプロセスが一番使っているのか確認できます。 やり方は Shift + o です。そうすると以下の様な項目一覧が表示されるので、見たい情報のアルファベットを入力してEnter を押します。 *のついた大文字の項目が選択している項目となります。
Current Sort Field:  N  for window 1:Def
Select sort field via field letter, type any other key to return

  a: PID        = Process Id                      Note1:
  b: PPID       = Parent Process Pid                If a selected sort field can't be
  c: RUSER      = Real user name                    shown due to screen width or your
  d: UID        = User Id                           field order, the '< ' and '>' keys
  e: USER       = User Name                         will be unavailable until a field
  f: GROUP      = Group Name                        within viewable range is chosen.
  g: TTY        = Controlling Tty
  h: PR         = Priority                        Note2:
  i: NI         = Nice value                        Field sorting uses internal values,
  j: P          = Last used cpu (SMP)               not those in column display.  Thus,
  k: %CPU       = CPU usage                         the TTY & WCHAN fields will violate
  l: TIME       = CPU Time                          strict ASCII collating sequence.
  m: TIME+      = CPU Time, hundredths              (shame on you if WCHAN is chosen)
* N: %MEM       = Memory usage (RES)
  o: VIRT       = Virtual Image (kb)
  p: SWAP       = Swapped size (kb)
  q: RES        = Resident size (kb)
  r: CODE       = Code size (kb)
  s: DATA       = Data+Stack size (kb)
  t: SHR        = Shared Mem size (kb)
  u: nFLT       = Page Fault count
  v: nDRT       = Dirty Pages count
  w: S          = Process Status
  x: COMMAND    = Command name/line
  y: WCHAN      = Sleeping in Function
  z: Flags      = Task Flags
これで見たい項目の昇順で表示されます。 ◆補足:各行の解説 1行目のtop以下の行 top - 10:47:43 up 83 days, 1:35, 1 user, load average: 0.26, 0.45, 0.49 稼働時間等の情報を表示しています。各項目の内容は次のとおり。 10:47:43 : 現在時間 up 83 days, 1:35 : 稼働時間(83日と1h25m間稼働中) 1 user : ログインユーザ数 load average: 0.26, 0.45, 0.49 : 実行待ちジョブの平均数1分前、5分前、15分前 2行目のTasks以下の行 Tasks: 65 total, 1 running, 64 sleeping, 0 stopped, 0 zombie 存在するタスクの状態を表示しています。各項目の内容は次のとおり。 total : タスクの合計数 running : 稼働中のタスク数 sleeping : 待機中のタスク数 stopped : 停止タスク数 zombie : ゾンビタスク数 3行目のCpu以下の行 Cpu(s): 1.0% us, 0.3% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si CPUの利用時間についての情報を占有時間の割合で表示しています。 us : ユーザプロセスの使用時間 sy : システムプロセスの使用時間 ni : 実行優先度を変更したユーザプロセスの使用時間 id : アイドル状態の時間 wa : I/Oの終了待をしている時間 hi : ハードウェア割込み要求での使用時間 si : ソフトウェア割込み要求での使用時間 4行目のMem以下の行 Mem: 127240k total, 124732k used, 2508k free, 2644k buffers 物理メモリの使用状況についての情報を表示しています。各項目の内容は次のとおり。 total : メモリ合計量 used : 使用中のメモリ量 free : 未使用のメモリ量 buffers : バッファに使用されているメモリ量 5行目のSwap以下の行 Swap: 1028152k total, 169640k used, 858512k free, 19112k cached スワップ領域の使用状況を表示しています。各項目の内容は次のとおり。 totale : スワップ領域の合計量 used : 使用中のスワップ領域 free : 未使用のスワップ領域 cached : キャッシュされているスワップ領域 6行目のPID以下の行 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 実行中のタクス(プロセス)の詳細を表示しています。各項目の内容は次のとおり。 PID : プロセス識別番号 USER : プロセスを実行しているユーザ PR : 優先度 NI : 相対的優先度(-20(最高)縲鰀19(最低)) VIRT: プロセスの仮想メモリサイズ(スワップアウトしたメモリ使用量を加えたメモリ量) RES : プロセスが使用している物理(スワップされていない)メモリサイズ SHR : プロセスが使用している共有メモリ S : プロセスの状態(状態の詳細については*1) %CPU: CPU使用率 %MEM : 実メモリ使用率 TIME+ : プロセスの実行時間(秒) COMMAND : 現在実行中のコマンド名 *1 プロセスの状態 S(スリープ状態) T (停止中) D (割り込み不可(sleep)) N (ナイス値がプラスの状態) < (ナイス値がマイナスの状態) R (実行中) Z (ゾンビ状態) W (スワップアウト状態) ソース: Linux のメモリー管理(メモリ-が足りない?メモリーリークの検出/防止) topコマンドの使い方