まとめ系記事
Macターミナルコマンド「ps」のオプションまとめと使用方法
スポンサーリンク

ターミナルコマンドps(process status)のオプションの説明と基本的な使用方法をお伝えします。

psはプロセスを確認するコマンドです。アクティビティモニタを使用すれば比較的簡単にプロセスを確認することができますが、使い方を工夫するとpsコマンドの方がより早く確認したいプロセスを発見することが可能です。
また、表示する項目を変更したりすることもできるので、より自分に合った確認方法へカスタマイズできるのも魅力です。

今回はターミナルの操作を含みますので起動方法や基本情報がわからない場合は、下記の記事を御確認ください。

プロセスとは

プロセスは稼働中のプログラムです。ジョブとかタスクとも呼ばれます。

アプリを起動するだけでも複数のプロセスが起動したりします。
つまりPCを動かすときに実行され稼働中のプログラムをプロセスと呼びます。

psコマンド基本動作

プロセスを確認するpsコマンドの使い方は下記です。

ps

現在稼働中のプロセスを確認できます。

Mac-psコマンド基本動作

しかしこれでは情報量が少なすぎてあまり意味がありません。
オプションを付与して検索範囲を広げたり、プロセス情報の項目を増やす必要があります。

psコマンドのオプションとは

psコマンドにオプションを付与することで、検索するプロセスの範囲指定や表示する項目を指定したりできます。

これにより自分が知りたいプロセスや確認したいプロセス情報を指定することができます。

オプションの種類

psのオプションにはいくつか種類が存在します。
機能的に全く同じなオプションもあります。オプションの種類は下記があります。

  • UNIXオプション(ハイフンで始まる)
  • BSDオプション(ハイフンつけない)
  • GNUロングオプション(ハイフン2つで始まる)

同じ種類のオプションであればps auxps -ecのようにまとめることができますが、BSDオプションとUNIXオプションを組み合わせる場合は下記のようになります。

BSDオプション、UNIXオプション組み合わせ例

ps e -A

BSDオプションの後にUNIXオプションを指定します。(環境によって順番は違うかもしれません)

今回はBSDオプションとUNIXオプションを中心に説明をします。

制御端末について

psコマンドの情報の一つに制御端末を表示する項目TTY(もしくはTT)があります。

ここに表示される端末の種類として以下が挙げられます。

  • pts ➡︎ 仮装端末
  • tty ➡︎ 実端末
  • ?? ➡︎ 端末の無いプロセス

デーモン系やアプリなども制御端末がないので「??」と表示されます。

psコマンドオプション

それではオプションの詳細を説明します。
すでにお伝えしましたが、オプションの種類によって機能が被っていたりするので自分の使用しやすいオプションを選んでみてください。

最後にオプション・項目名の意味・プロセスの状態の一覧などを記載しますので参考にしてください。

A,-A,-e

全部のプロセスを表示します。

ps -A
  PID TTY           TIME CMD
    1 ??         1:09.25 /sbin/launchd
   51 ??         0:02.63 /usr/sbin/syslogd
---以下省略

後述しますがps axと同じ機能になります。

a,-a

自分と他ユーザ含め端末操作のプロセスを表示します。

ps -a
  PID TTY           TIME CMD
 6806 ttys001    0:00.02 login -pf D-Box
 6807 ttys001    0:00.19 -bash
 7215 ttys001    0:00.00 ps -a

制御端末をもつプロセスなので、端末名が表示されます。

c,-c

コマンド名のパスを省いてコマンド名称を表示します。

ps Ac
  PID   TT  STAT      TIME COMMAND
    1   ??  Ss     1:15.48 launchd
   51   ??  Ss     0:02.70 syslogd
---以下省略

コメンド名を確認したい場合は視認しやすくなります。

d,-d

全プロセスのセッションリーダーのみ表示します。

ps d
  PID   TT  STAT      TIME COMMAND
  230   ??  S      0:00.01 /usr/sbin/rpc.lockd
  269   ??  S      0:00.57 /usr/sbin/systemstats --logger-helper /private/var/db/systemstats
--以下省略

e,E,-E

コマンドの環境変数を表示します。

ps e
  PID   TT  STAT      TIME COMMAND
 6807 s001  S      0:00.27 -bash TMPDIR=/var/folders/ww/8lm0xhdn0d9g52k1kk5q9jbh0000gn/T/ XPC_FLAGS=0x0 Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.AmU6vrodnt/Rende

-f

プロセスを[ユーザID,プロセスID,親プロセスID,短期間のCPU使用率,プロセス開始時刻,制御端末名,CPU使用経過時間,コマンド名]の項目で表示します。

ps -f
  UID   PID  PPID   C STIME   TTY           TIME CMD
  501  6807  6806   0 11:39AM ttys001    0:00.32 -bash

h,-h

ページ毎に項目名(ヘッダー)を再度表示します。

Mac-psコマンドーhオプション

大量のプロセスを表示する際どの項目かわからなくなるので視認性が上がります。

j,-j

プロセスを[ユーザ名,プロセスID,親プロセスID,プロセスグループID,セッションID,ジョブコントロールカウント,プロセスの状態,端末名,CPU使用経過時間,コマンド名]の項目で表示します。

ps j
USER    PID  PPID  PGID   SESS JOBC STAT   TT       TIME COMMAND
D-Box  6807  6806  6807      0    1 S    s001    0:00.36 -bash

L,-L

表示する項目を指定できるオプションo,-o,O,-Oで使用できる項目を一覧で表示します。

ps L
%cpu %mem acflag acflg args blocked caught comm command cpu cputime etime f flags gid group ignored inblk inblock jobc ktrace ktracep lim login logname lstart majflt minflt
msgrcv msgsnd ni nice nivcsw nsignals nsigs nswap nvcsw nwchan oublk oublock p_ru paddr pagein pcpu pending pgid pid pmem ppid pri pstime putime re rgid rgroup rss ruid ruser
sess sig sigmask sl start stat state stime svgid svuid tdev time tpgid tsess tsiz tt tty ucomm uid upr user usrpri utime vsize vsz wchan wq wqb wql wqr xstat

-l

プロセスを[ユーザID,プロセスID,親プロセスID,フラッグ,短期間のCPU使用率,優先順位,ナイス値,確保している仮想メモリサイズ,使用しているメモリ量,プロセス待機中の16進数からの関数,プロセスの状態,スワップアドレス,制御端末名,CPU使用経過時間,コマンド名]の項目で表示します。

ps -l
  UID   PID  PPID        F CPU PRI NI       SZ    RSS WCHAN   S             ADDR TTY           TIME CMD
  501  6807  6806     4006   0  31  0  4296240   1628 -      S                   0 ttys001    0:00.43 -bash

l

プロセスを[ユーザID,プロセスID,親プロセスID,短期間のCPU使用率,優先順位,ナイス値,確保している仮想メモリサイズ,使用しているメモリ量,プロセス待機中の16進数からの関数,プロセスの状態,制御端末名,CPU使用経過時間,コマンド名]の項目で表示します。

ps l
  UID   PID  PPID CPU PRI NI      VSZ    RSS WCHAN  STAT   TT       TIME COMMAND
  501  6807  6806   0  31  0  4296240   1640 -      S    s001    0:00.69 -bash

M,-M

プロセスに対応するスレッドを表示します。

ps xM
USER    PID   TT   %CPU STAT PRI     STIME     UTIME COMMAND
D-Box   332   ??    0.0 S    31T   0:00.00   0:00.01 /usr/sbin/distnoted agent
        332         0.0 S    37T   0:00.00   0:00.00 
D-Box   333   ??    0.0 S     4T   0:00.00   0:00.00 /usr/sbin/cfprefsd agent
        333         0.0 S     4T   0:00.00   0:00.00 
        333         0.0 S     4T   0:00.00   0:00.00 
D-Box   334   ??    0.0 S    31T   0:00.00   0:00.00 /usr/libexec/secd

m,-m

プロセスをメモリ消費率順に表示します。

ps uxmc
USER    PID  %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMAND
D-Box   539   3.8  3.2  5424816 1070876   ??  S    火12PM  84:23.22 VBoxHeadless
D-Box  2707   1.1  3.0  7651532 1010112   ??  S    火08PM  29:01.35 MarsEdit
D-Box   769   0.2  1.9  5786864 620984    ??  S    火12PM  23:21.46 Google Chrome Helper

メモリが圧服されているときには便利です。

O,-O

プロセスを通常の項目に加えて、指定した項目で表示します。
[ユーザID,指定した項目,制御端末,プロセスの状態,CPU使用経過時間,コマンド名]

ps -O pcpu,pmem
  PID  %CPU %MEM   TT  STAT      TIME COMMAND
 6807   0.0  0.0 s001  S      0:00.48 -bash

o,-o

プロセスを指定した項目のみで表示します。

ps o pcpu,pmem,tty,lstart,comm
 %CPU %MEM TTY      STARTED                      COMM
  0.0  0.0 ttys001  木  5/17 11:39:19 2018      -bash

p,-p

指定したプロセスIDでプロセスを表示します。

ps p 501
  PID   TT  STAT      TIME COMMAND
  501   ??  S      0:00.03 /System/Library/PrivateFrameworks/CoreCDP.framework/Versions/A/Resources/cdpd

r,-r

プロセスをCPU使用率順に表示します。

ps Aucr
USER               PID  %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMAND
D-Box              539   3.3  3.2  5424816 1070880   ??  S    火12PM  85:20.05 VBoxHeadless
D-Box             2707   3.3  3.0  7667932 1018636   ??  S    火08PM  33:46.96 MarsEdit
D-Box             7088   0.7  0.1  5624172  35952   ??  S    木12PM  16:46.09 DashboardClient

m,-mオプションと同様に調査に役立ちます。

T,-T

デバイスに接続しているプロセスを表示します。

ps -T
  PID TTY           TIME CMD
 6806 ttys001    0:00.02 login -pf D-Box
 6807 ttys001    0:00.61 -bash
11460 ttys001    0:00.00 ps -T

t,-t

デバイス名を指定して、デバイスに接続しているプロセスを表示します。

ps -t ttys001
  PID TTY           TIME CMD
 6806 ttys001    0:00.02 login -pf D-Box
 6807 ttys001    0:00.61 -bash
11461 ttys001    0:00.00 ps -t ttys001

U,-U

ユーザIDでプロセスを実行しているユーザを指定してプロセスを表示します。

ps U 89
  PID   TT  STAT      TIME COMMAND
  581   ??  S      0:01.40 /usr/libexec/trustd --agent
  687   ??  S      0:00.19 /usr/sbin/distnoted agent
---以下省略

-u

ユーザ名でプロセスを実行しているユーザを指定してプロセスを表示します。

ps -u Spotlight 
  UID   PID TTY           TIME CMD
   89   581 ??         0:01.40 /usr/libexec/trustd --agent
   89   687 ??         0:00.19 /usr/sbin/distnoted agent
---以下省略

u

プロセスを[ユーザ名,プロセスID,CPU使用率,メモリ消費率,確保している仮想メモリサイズ,使用しているメモリ量,制御端末,プロセスの状態,コマンド起動時刻,CPU使用経過時間,コマンド名]の項目を、CPU使用率順に表示します。

ps u
USER    PID  %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMAND
D-Box  6807   0.0  0.0  4296240   1636 s001  S    木11AM   0:00.64 -bash

デフォルトで用意されている項目指定のオプションでは一番視認性が良いと思います。

v,-v

プロセスを[プロセスID,プロセスの状態,CPU使用経過時間,スリープ時間,コア在留時間,ページイン,確保している仮想メモリサイズ,使用しているメモリ量,メモリ使用制限,文字サイズ,CPU使用率,メモリ消費率,コマンド名]の項目を、メモリ消費率順に表示します。

ps Acv
  PID STAT      TIME  SL  RE PAGEIN      VSZ    RSS   LIM     TSIZ  %CPU %MEM COMMAND
  539 S     87:04.90   0   0      0  5426340 1072916     -        0   3.4  3.2 VBoxHeadless
 2707 S     40:10.28   0   0      0  7682652 1034904     -        0   4.4  3.1 MarsEdit
  769 S     23:48.91   0   0      0  5799692 626512     -        0   0.2  1.9 Google Chrome Helper

それぞれの情報一覧

オプション・項目の意味・プロセスの状態など理解が必要な箇所が多いので一覧でまとめました。
わからなくなったら確認してみてください。

オプション一覧

オプション 機能
A,-A,-e 全プロセスを表示
a,-a 自分と他ユーザ含め端末操作のプロセスを表示
c,-c コマンド名のパスを省いてコマンド名称のみ表示
d,-d 全プロセスのセッションリーダーのみ表示
e,E,-E コマンドの環境変数を表示
-f [ユーザID,プロセスID,親プロセスID,CPU使用度,プロセス開始時刻,制御端末名,CPU使用経過時間,コマンド名]の項目で表示
h,-h ページ毎に項目名(ヘッダー)を再度表示
j,-j プロセスを[ユーザ名,プロセスID,親プロセスID,プロセスグループID,セッションID,ジョブコントロールカウント,プロセスの状態,端末名,CPU使用経過時間,コマンド名]の項目で表示
L,-L オプションo,-o,O,-Oで使用できる項目を一覧で表示
-l プロセスを[ユーザID,プロセスID,親プロセスID,フラッグ,CPU使用度,優先順位,ナイス値,確保している仮想メモリサイズ,使用しているメモリ量,プロセス待機中の16進数からの関数,プロセスの状態,スワップアドレス,制御端末名,CPU使用経過時間,コマンド名]の項目で表示
l プロセスを[ユーザID,プロセスID,親プロセスID,短期間のCPU使用率,優先順位,ナイス値,確保している仮想メモリサイズ,使用しているメモリ量,プロセス待機中の16進数からの関数,プロセスの状態,制御端末名,CPU使用経過時間,コマンド名]の項目で表示
M,-M プロセスに対応するスレッドを表示
m,-m メモリ消費率順に表示
O,-O プロセスを通常の項目に加えて、指定した項目で表示します。
[ユーザID,指定した項目,制御端末,プロセスの状態,CPU使用経過時間,コマンド名]
o,-o 指定した項目のみで表示
p,-p 指定したプロセスIDでプロセスを表示
r,-r プロセスをCPU使用率順に表示
T,-T デバイスに接続しているプロセスを表示
t,-t デバイス名を指定して、デバイスに接続しているプロセスを表示
U,-U ユーザIDでプロセスを実行しているユーザを指定してプロセスを表示
-u ユーザ名でプロセスを実行しているユーザを指定してプロセスを表示
u プロセスを[ユーザ名,プロセスID,CPU使用率,メモリ消費率,確保している仮想メモリサイズ,使用しているメモリ量,制御端末,プロセスの状態,コマンド起動時刻,CPU使用経過時間,コマンド名]の項目を、CPU使用率順に表示
v,-v プロセスを[プロセスID,プロセスの状態,CPU使用経過時間,スリープ時間,コア在留時間,ページイン,確保している仮想メモリサイズ,使用しているメモリ量,メモリ使用制限,文字サイズ,CPU使用率,メモリ消費率,コマンド名]の項目を、メモリ消費率順に表示

項目(ヘッダー)一覧

オプションo,-o,O,-Oで表示する項目名としても使用できます。
ある程度抜粋しているので、他の項目を使用したい場合はオプションL,-Lで確認してみてください。

項目名 意味
%CPU(pcpu) CPU使用率
CPU 短期間のCPU使用率
COMMAND(CMD) コメンド名
%MEM(pmem) メモリ消費率
PID プロセスID
PPID 親プロセスID
PGID グループプロセスID
START(STARTED) プロセス起動時刻
LSTART プロセス起動時刻(o,Oオプションで項目を指定するとより詳細な時刻を表示)
TT 制御端末名(省略形)
TTY 制御端末名
TIME CPU使用経過時間
USER ユーザ名
UID ユーザID
RSS 使用しているメモリ量
VSZ 確保している仮想メモリサイズ
STATE(STAT) プロセスの状態
NICE Nice値(優先度)数字が大きいほど優先度が低い
SESS セッションID
WCHAN プロセス待機中の16進数からの関数
PRI 優先順位
静的な優先順位はNice値で決まり、動的な優先順位は静的優先順位をベースに決まる

プロセスの状態一覧

既に何度か記載していますが、項目の「STAT」にはプロセスの状態が表示されます。
記号でプロセス状態が表示されているので一覧で説明します。

1文字目の記号です

ステータス記号 意味
I アイドル状態(20秒以上スリープしている)
R 実行可能または実行中
S 割り込み可能なスリープ状態(20秒未満スリープしている)
T ジョブ制御シグナルにより停止
U 無停止待機状態
Z 終了後、親プロセスに回収されなかった死んだ状態

2文字目以降の記号です。

ステータス記号 意味
制御端末のフォアグラウンドプロセスグループに入っている
CPU使用優先度が上がっている
メモリ要求に対するソフトリミットが指定されており、そのリミットを超えている状態。このようなプロセスはメモリの中身をハードディスクに移さない。
A ランダムなページ置換を要求している
E 終了中
L 実メモリのページをロックして利用している
N CPU使用優先度が下がっている
S FIFO(ファーストインファーストアウト)ページ置換を要求している
最初に格納したデータから取り出す方式
s セッションリーダーである
V vfork(呼び出したプロセスの子プロセスを生成)の間、一時中断されている
W スワップアウト(メモリの中身をハードディスクに移す)されている。
X トレースかデバッグされている

psの基本使用方法

とても長くなりましたが最後に、上記の情報を踏まえてよく使われる簡単な使用方法を説明したいと思います。

全プロセス表示

ps aux

全部のプロセスを表示する場合はこの方法が使いやすいかと思います。もしくはps Auとかでもいいですね。

確認したいプロセス名・ファイル名・アプリ名などで調べたい場合はgrepを使うと便利です。

名前を指定する

ps aux | grep プロセス名・ファイル名・アプリ名

オプションo,-oで項目を自分の好みで指定するのもオススメです。

項目を指定する

ps axho user,pid,ppid,pri,pcpu,pmem,vsz,rss,lstart,command
USER               PID  PPID PRI  %CPU %MEM      VSZ    RSS STARTED                      COMMAND
root                 1     0  37   0.0  0.1  4329032  22384 火  5/15 12:02:13 2018      /sbin/launchd
root                51     1   4   0.0  0.0  4305532   1544 火  5/15 12:02:14 2018      /usr/sbin/syslogd

「lstart」を指定するとプロセス起動日時を詳細に確認できて結構便利です。

自分が使用するpsコマンドのオプションが決まっている場合は、エイリアスに登録しておくと毎回入力せずに済むので便利です。
エイリアス登録方法は以下の記事で説明しています。

以上になります。とても長くなりましたが何か参考になれば幸いです。

スポンサーリンク

この記事が気に入ったら
D-Boxをフォロー

新しい情報をお知らせします。

おすすめの記事