ps
ps コマンド は現在のシステムのプロセス状態を表示するために使用します。ps コマンドは最も基本的かつ非常に強力なプロセス確認コマンドで、どのプロセスが実行中かとその状態、プロセスが終了しているか、ゾンビになっていないか、どのプロセスがリソースを過剰に使用しているかなどを確認できます。
構文
ps [options]
オプション
Basic options(基本オプション):
-A, -e: すべてのプロセスを含めます。-a: 端末(tty)を持つすべてのプロセスを含めますが、セッションリーダーは含めません。a: 他のユーザーのプロセスも含め、端末(tty)を持つすべてのプロセスを含めます。-d: セッションリーダー以外のすべてのプロセスを含めます。-N, --deselect: プロセスの選択を反転します。r: 実行中のプロセスのみを表示します。T: 現在の端末に関連するすべてのプロセスを表示します。x: 制御端末を持たないプロセスを表示します。
Selection by list(リストによる選択):
-C <command>: コマンド名でプロセスを選択します。-G, --Group <GID>: 実グループ ID またはグループ名でプロセスを選択します。-g, --group <group>: セッションまたは実効グループ名でプロセスを選択します。-p, p, --pid <PID>: プロセス ID でプロセスを選択します。--ppid <PID>: 親プロセス ID でプロセスを選択します。-q, q, --quick-pid <PID>: クイックモードでプロセス ID によりプロセスを選択します。-s, --sid <session>: セッション ID でプロセスを選択します。-t, t, --tty <tty>: 端末でプロセスを選択します。-u, U, --user <UID>: 実効ユーザー ID またはユーザー名でプロセスを選択します。-U, --User <UID>: 実ユーザー ID またはユーザー名でプロセスを選択します。
Output formats(出力形式):
-F: 追加の詳細情報を表示します。-f: コマンドラインを含む完全形式。f, --forest: ASCII アートでプロセスツリーを表示します。-H: プロセスの階層構造を表示します。-j: ジョブ形式。j: BSD ジョブ制御形式。-l: ロング形式。l: BSD ロング形式。-M, Z: セキュリティデータを追加します(SELinux 向け)。-O <format>: デフォルトの列とともにプリロードします。O <format>: BSD スタイルで列をプリロードします。-o, o, --format <format>: ユーザー定義形式。s: シグナル形式。u: ユーザー向け形式。v: 仮想メモリ形式。X: レジスタ形式。-y: フラグを表示せず、RSS とアドレスを表示します(-l と併用)。--context: セキュリティコンテキストを表示します(SELinux 向け)。--headers: ページごとにヘッダー行を繰り返します。--no-headers: ヘッダーを一切表示しません。--cols, --columns, --width <num>: 画面幅を設定します。--rows, --lines <num>: 画面の高さを設定します。
Show threads(スレッドの表示):
H: スレッドをプロセスのように表示します。-L: LWP と NLWP の列を含める場合があります。-m, m: プロセスの後にスレッドを表示します。-T: SPID 列を含める場合があります。
Miscellaneous options(その他のオプション):
-c: -l オプション使用時にスケジューリングクラスを表示します。c: 実際のコマンド名を表示します。e: コマンドの後に環境変数を表示します。-
k, --sort: ソート順を指定します。例:[+-]key[,[+ -]key[,…]]。 L: フォーマット指定子を表示します。n: 数値のユーザー ID と wchan を表示します。S, --cumulative: 終了した子プロセスの一部データを含めます。-y: フラグを表示せず、RSS を表示します(-l と併用時のみ)。-V, V, --version: バージョン情報を表示して終了します。-w, w: 出力幅を無制限にします。
Help options(ヘルプオプション):
--help <simple|list|output|threads|misc|all>: ヘルプを表示して終了します。異なるヘルプモードを選択できます。
よく使うコマンド
現在のログインセッションに属する PID と関連情報を一覧表示
sunrise@ubuntu:~$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 1000 4295 4294 8 80 0 - 3304 do_wai pts/0 00:00:00 bash
0 R 1000 4304 4295 0 80 0 - 3504 - pts/0 00:00:00 ps
F:このプログラムのフラグ(flag)を表します。4 はユーザーがスーパーユーザーであることを示しますS:このプログラムの状態(STAT)を表します。各 STAT の意味は以下のとおりですS:プロセスはスリープ中(Sleeping)R:プロセスは実行中または実行可能(Running)D:プロセスは割り込み不可(Uninterruptible Sleep)T:プロセスは停止済み(Stopped)Z:ゾンビプロセス(Zombie)t:プロセスはトレース中または停止済み(Traced or stopped)P:プロセスはトレース中または停止済みで、待機中(Parked)UID:プロセスのユーザー ID で、プロセスを実行しているユーザーを示します。PID:プロセス ID で、OS が各プロセスに割り当てる一意の識別子です。PPID:親プロセス ID で、現在のプロセスを起動した親プロセスの ID を示します。C:CPU 使用率で、プロセスが占める CPU 時間の割合を示します。PRI:プロセスの優先度。NI:プロセスの nice 値で、通常はプロセスの優先度の調整に使用します。ADDR:プロセスのアドレス空間。カーネル関数で、プログラムがメモリのどの部分にあるかを示します。実行中のプログラムの場合、通常は “-“ ですSZ:プロセスの仮想メモリサイズ(ページ単位)。WCHAN:プロセスが現在待機しているイベントまたはロック。- の場合は動作中を示しますTTY:プロセスに関連付けられた端末(ある場合)。TIME:プロセスがこれまでに使用した CPU 時間。CMD:プロセスのコマンドライン。
現在メモリ上にあるすべてのプログラムを一覧表示
sunrise@ubuntu:~$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.4 0.4 167592 10076 ? Ss 10:16 0:02 /sbin/init
root 2 0.0 0.0 0 0 ? S 10:16 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? I< 10:16 0:00 [kworker/0:0H]
root 5 0.0 0.0 0 0 ? I 10:16 0:00 [kworker/u8:0]
USER:プロセスの所有ユーザー、すなわちプロセスを実行しているユーザーを示します。PID:プロセス ID で、各プロセスを識別する一意の識別子です。%CPU:プロセスの CPU 使用率、すなわちプロセスが使用した CPU 時間が全 CPU 時間に占める割合です。%MEM:プロセスのメモリ使用率、すなわちプロセスが使用している物理メモリが全物理メモリに占める割合です。VSZ:プロセスの仮想メモリサイズ(Virtual Set Size)、すなわちプロセスがアクセスできる仮想メモリのサイズで、通常はキロバイト(KB)単位です。RSS:プロセスの物理メモリサイズ(Resident Set Size)、すなわちプロセスが現在占有している物理メモリのサイズで、通常はキロバイト(KB)単位です。TTY:プロセスに関連付けられた端末を示します。端末に関連付けられていない場合は ”?” と表示されます。STAT:プロセスの状態を示します。通常は以下の状態があります:R:実行状態(Running)S:スリープ状態(Sleeping)D:割り込み不可状態(Uninterruptible Sleep)Z:ゾンビ状態(Zombie)T:停止状態(Stopped)- その他の状態が存在する場合もあり、具体的な意味は OS によって異なります。
START:プロセスの開始時刻で、通常は 時:分 の形式で表示されます。TIME:プロセスがこれまでに使用した CPU 時間で、通常は 時:分:秒 の形式で表示されます。COMMAND:プロセスのコマンドライン、すなわちプロセスが実行しているコマンドと引数を示します。
プログラムをツリー形式で一覧表示
sunrise@ubuntu:~$ ps -axjf
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
1 2973 2973 2973 ? -1 Ss 0 0:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
2973 4067 4067 4067 ? -1 Ss 0 0:00 \_ sshd: root@pts/0
4067 4239 4239 4239 pts/0 4364 Ss 0 0:00 | \_ -bash
4239 4294 4294 4239 pts/0 4364 S 0 0:00 | \_ su sunrise
4294 4295 4295 4239 pts/0 4364 S 1000 0:00 | \_ bash
4295 4364 4364 4239 pts/0 4364 R+ 1000 0:00 | \_ ps -axjf
2973 4069 4069 4069 ? -1 Ss 0 0:00 \_ sshd: root@notty
4069 4242 4242 4242 ? -1 Ss 0 0:00 \_ /usr/lib/openssh/sftp-server
その他のコマンド
ps axo pid,comm,pcpu # 查看进程的PID、名称以及CPU 占用率
ps aux | sort -rnk 4 # 按内存资源的使用量对进程进行排序
ps aux | sort -nk 3 # 按 CPU 资源的使用量对进程进行排序
ps -A # 显示所有进程信息
ps -u root # 显示指定用户信息
ps -efL # 查看线程数
ps -e -o "%C : %p :%z : %a"|sort -k5 -nr # 查看进程并按内存使用大小排列
ps -ef # 显示所有进程信息,连同命令行
ps -ef | grep ssh # ps 与grep 常用组合用法,查找特定进程
ps -C nginx # 通过名字或命令搜索进程
ps aux --sort=-pcpu,+pmem # CPU或者内存进行排序,-降序,+升序
ps -f --forest -C nginx # 用树的风格显示进程的层次关系
ps -o pid,uname,comm -C nginx # 显示一个父进程的子进程
ps -e -o pid,uname=USERNAME,pcpu=CPU_USAGE,pmem,comm # 重定义标签
ps -e -o pid,comm,etime # 显示进程运行的时间
ps -aux | grep named # 查看named进程详细信息
ps -o command -p 91730 | sed -n 2p # 通过进程id获取服务名称
ドキュメント