ps コマンドは、システムで現在実行中のプロセスをまとめたレコードであるプロセス テーブルを呼び出します。コマンドをオプションなしで実行すると、現在のシェルによって実行されているプロセスが、PID、プロセスに関連付けられた端末、累積 CPU 時間、プロセスを開始したコマンドなどの詳細とともに表示されます。ただし、コマンドと共に別のオプションを使用して、表示されるフィールドまたはプロセスをフィルタリングすることもできます。
構文
ps コマンドの構文は次のとおりです。
$ ps [options]
コマンド オプションの構文スタイル
ps コマンドは、3 つの異なるスタイルのコマンド オプション構文をサポートします:Unix スタイル (ハイフンが前に付く)、GNU スタイル (ハイフンが 2 つ前に付く)、および BSD スタイル (ハイフンなし)。これらのスタイルを混在させても、常に同じ結果が得られるとは限りません。たとえば、ps コマンド (BSD スタイル) は、セッション リーダー (プロセス グループの最初のメンバー) を含む、制御端末を使用してすべてのプロセスを出力します。また、各プロセスのステータスと、各プロセスの完全なコマンド (オプションを含む) も出力します。 ps -a コマンド (Unix スタイル) も、制御端末を使用してすべてのプロセスを出力しますが、セッション リーダー、各プロセスのステータス、各プロセスの完全なコマンドは含まれません。
ps コマンド オプション
ps コマンドはいくつかのオプションをサポートしています。より顕著なオプションのいくつかをここにリストします。
オプション | 慣れている |
---|---|
a | ユーザーがトリガーしたすべてのプロセスを一覧表示します。 |
-e | すべてのプロセスを一覧表示します。 |
-l | 長いリスト形式を使用してプロセスをリストします。 |
う | ユーザー名と開始時刻とともにプロセスを一覧表示します。 |
r | 現在実行されていないプロセスを除外します。 |
x | 端末のないプロセスを含めます。 |
T | 現在の端末以外の端末によって開始されたプロセスを除外します。 |
-U {ユーザー名} | 指定されたユーザーに基づいてプロセスを表示します。 |
-p {PID} | 指定された PID に関連付けられたプロセスのみを表示します。 |
-C {コマンド} | すべてのプロセスをコマンド名別に表示します。 |
–tty {端末番号} | 指定された端末で実行されているすべてのプロセスを表示します。 |
ps コマンドの実行中に次のエラーが発生した場合:
ps: command not found
選択したディストリビューションに従って、以下のパッケージをインストールしてみてください:
OS 分布 | コマンド |
---|---|
Debian | apt-get install procps-ng |
Ubuntu | apt-get install procps-ng |
Arch Linux | pacman -S procps-ng |
カリ Linux | apt-get install procps-ng |
CentOS | yum install procps-ng |
Fedora | dnf install procps-ng |
Raspbian | apt-get install procps-ng |
ps コマンドの例
1. ゾンビのプロセスを見るには:
# ps aux | awk '{ print $8 " " $2 }' | grep -w Z
2. ゾンビ プロセスの一覧表示:
# ps -el | grep Z
3. 実行中のプロセスを検索/一覧表示するには:
# ps -r
4. 特定のユーザーのプロセスを検索:
# ps -U apache # ps U apache # ps -u apache
5. root として実行されているすべてのプロセス (実際の有効な ID) をユーザー形式で表示するには:
# ps -U root u
6. コマンド実行で test.pl を含むプロセスを検索/一覧表示するには:
# ps -f -C test.pl
7. PID に基づいてプロセスを一覧表示します。
# ps -f --ppid 9576
8. pgrep、pkill – 名前やその他の属性に基づいてプロセスを検索または通知します。
# pgrep 1234 # pkill 1234 OR # pkill httpd
9. ps 出力のソート:
# ps -eo uname,pid,ppid,nlwp,pcpu,pmem,psr,start_time,tty,time,args --sort -pcpu,-pmem
10. プロセス ツリーを印刷するには:
# ps -ejH # ps axjf
11. syslogd のプロセス ID のみを出力:
# ps -C syslogd -o pid=
12. PID 42 の名前だけを表示:
# ps -p 42 -o comm=
13. UID とコマンドに基づいてプロセスを一覧表示します。
# ps -f -u wwwrun,postfix
14. PID または PPID に基づいてプロセスを一覧表示します。
# ps -f --ppid 9576
15. 階層内のプロセスをリストする:
# ps -e -o pid,args --forest
16. プロセスの経過時間のリスト:
# ps -p 1,29675 -o pid,etime=
17. プロセス階層を一覧表示するには:
# ps -e -o pid,args --forest # ps axjf # ps -ejH
18. 特定のプロセスのすべてのスレッドをリストします:
# ps -C java -L -o pid,tid,pcpu,state,nlwp,args
19. プロセスのツリーを表示するには:
# pstree
20. プロセスの経過時間を一覧表示するには:
# ps -p 1,29675 -o pid,etime=
21. プロセスの開始時刻を取得するには:
# ps -p PID -o lstart=
22. 現在実行中の各プロセスに関する完全な情報を表示します:
# ps -ef | grep
23. スレッドに関する情報を取得するには:
# ps -eLf # ps axms
24. セキュリティ情報を取得するには:
# ps -eo euser,ruser,suser,fuser,f,comm,label # ps axZ # ps -eM
25. ユーザー定義のフォーマットですべてのプロセスを表示するには:
# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm # ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm # ps -eopid,tt,user,fname,tmout,f,wchan
26. 特定のプロセスのすべてのスレッドを一覧表示する:
# ps -C java -L -o pid,tid,pcpu,state,nlwp,args
27. 完全なコマンド文字列を含む、実行中のすべてのプロセスを一覧表示します。
# ps auxww
28. 文字列に一致するプロセスを検索します:
# ps aux | grep string
29. 現在のユーザーのすべてのプロセスを追加の完全な形式で一覧表示します。
# ps --user $(id -u) -F
30. 現在のユーザーのすべてのプロセスをツリーとしてリストします:
# ps --user $(id -u) f
31. プロセスの親 PID を取得する:
# ps -o ppid= -p pid
32. メモリ消費量でプロセスを並べ替える:
# ps --sort size