
ps 現在実行中のプロセスを一覧表示するためにUnix/Linuxオペレーティングシステムで使用される組み込みコマンドです。プロセスに関する情報を含む静的スナップショットが表示されますが、top、htop、glanceは繰り返し更新されます。
Psコマンドには、出力を操作するための多くのオプションが付属しています。 /proc仮想ファイルシステムからプロセスのすべての情報を取得します。
このチュートリアルでは、psコマンドの使用方法といくつかの実用的な例を説明することに焦点を当てます
psコマンドの構文
psコマンドの基本的な使用法は次のとおりです。
$ ps [options]

psコマンドの「オプション」は次のとおりです。
- UNIXオプション-ダッシュの前に
- BSDオプション-ダッシュなしで使用する必要があります
- GNUロングオプション-2つのダッシュが前に付きます
これは非常に基本的なpsコマンドの使用法です。コンソールで「ps」と入力するだけで、結果が表示されます:
$ ps
デフォルトでは、4列の情報が表示されます。
- PIDは、実行中のコマンド(CMD)のプロセスIDです
- TTYは、実行中のコマンドが実行される場所です
- TIMEは、コマンドの実行中にCPUが使用した時間を示します
- CMDは、現在のプロセスとして実行されるコマンドです
オプションなしでpsコマンドを実行することは、コマンドの最も単純な形式であり、多くの情報を返しません。 psコマンドの能力を最大限に活用するために、次のセクションでさらに詳しく説明する追加のオプションを使用して実行してみましょう。
01)すべてのプロセスを表示する(UNIX形式)
Linuxシステムのすべてのプロセスを表示するには、次のコマンドのいずれかを実行できます。
$ ps -A
または:
$ ps -e

さらに、実行中のすべてのプロセスを一覧表示するには、次のコマンドを実行します。
$ ps -r

02)すべてのプロセスを表示する(BSD形式)
BSD形式のpsコマンドを使用してLinuxシステム上のすべてのプロセスを表示するには、次のコマンドを実行できます。
$ ps ax
または
$ ps aux

場所:
- USER-ユーザーがプロセスを実行します
- PID-プロセスID
- %CPU /%MEM-プロセスによって占有されているCPU/RAMの割合
- VSZ-プロセスが占有している仮想メモリのサイズ
- RSS-プロセスが占有している物理メモリのサイズ
- START-開始時間
- STAT-S(スリープ)、R(実行中)、I(中断可能なスリープ)のプロセスの状態。
- 時間-実行中のプロセスに対してカーネルによって与えられたCPU時間を表示します。
- コマンド-現在のプロセスとして実行されるコマンド
03)コマンドによって実行されるすべてのプロセスを表示します
コマンドによって実行されるすべてのプロセスを一覧表示するには、次の構文を使用します。
$ ps -C <command_name>
たとえば、次のコマンドを実行して、「/ usr / sbin/kerneloops」コマンドのすべてのプロセスを一覧表示します。
$ ps -C kerneloops

空白で区切られたリストまたはコンマで区切られたリストの形式で引数を使用することもできます。例:
$ ps -C sshd,systemd
04)ユーザーが実行しているすべてのプロセスを表示します
ユーザーIDが1000のユーザーごとにプロセスを一覧表示する場合は、次のコマンドを実行してみましょう。
$ ps -u 1000

ユーザー名でプロセスを検索することもできます:
$ ps -U root -u root u
-U parameter
real user ID (RUID)
で選択します 。実際のユーザー名またはIDがユーザーリストリストにあるプロセスを選択します。実際のユーザーIDは、プロセスを作成したユーザーを識別します。
-u paramater
有効なユーザーID(EUID)で選択します
05)グループが所有するプロセスを表示する
特定のグループ名が所有するすべてのプロセスを一覧表示するには、-fG
を指定してコマンドを実行します。 オプション。例:
$ ps -fG cas

すべてのプロセスをグループIDで表示するには、「-g」オプションを指定してコマンドを実行します。例:
$ ps -g 1
出力:
PID TTY TIME CMD
1 ? 00:00:03 systemd
06)PIDによるプロセスの表示
'-fp'オプションを指定してpsコマンドを実行すると、すべてのプロセスをPID別に一覧表示できます。例:
$ ps -fp 34531
出力:
UID PID PPID C STIME TTY TIME CMD
cas 34531 1 0 06:16 ? 00:00:00 /lib/systemd/systemd --user
さらに、すべてのプロセスをPPIDで一覧表示するには、「-ppid」オプションを指定してコマンドを実行します。
$ ps -f --ppid 34529
出力:
UID PID PPID C STIME TTY TIME CMD
cas 34609 34529 0 06:16 ? 00:00:00 sshd: cas@pts/0
07)TTYによるプロセスの表示
すべてのプロセスをTTYで表示するには、「-t」オプションを指定してコマンドを実行します。例:
$ ps -t tty1

08)現在のユーザーが所有するプロセスを表示する
現在のユーザーが実行しているすべてのプロセスを一覧表示するには、「-x」オプションを指定してコマンドを実行します。
$ ps -x

09)すべてのプロセスを完全な形式のリストで表示します
たとえば、-f
を指定してpsコマンドを実行してみましょう。 オプション、すべてのプロセスをフルフォーマットで表示するには:
$ ps -af

10)すべてのプロセスを追加の形式で表示する
さらに、結果の追加の完全な形式のリストを表示するには、-F
を指定してpsコマンドを実行します。 オプション。例:
$ ps -F

11)すべてのプロセスをASCII階層形式で表示します
説明のために、Linuxシステム上のすべてのプロセスをASCIIアートプロセス階層形式で表示したいと仮定して、次を実行してみましょう。
$ ps af
出力は「フォレスト」形式になります:

12)拡大出力での表示プロセス
psコマンドの実行時に出力を拡大する場合は、w
を使用します オプション:
$ ps w
実行中の「psw」と「ps」の出力を比較してみましょう:

13)ユーザー定義の形式に従った表示プロセス
次の構文を使用して、ユーザー定義形式で表示できます。
Syntax:
$ ps --format column_name
$ ps -o column_name
$ ps o column_name
For example:
$ ps -e -o user,pid,cmd
14)スレッドIDのスレッドを表示する
たとえば、SPID列(SPIDはスレッドID)を持つスレッドを表示するには、次のコマンドを実行します。
$ ps -aT

15)スレッドに関する情報を表示する
さらに、「-L」オプションを使用して、Linuxシステムのスレッドに関する情報を取得できます。
$ ps -aL
'LWP'列の出力には、スレッドIDが表示されます:

その他の例
01)RAMを最も多く使用しているプロセスを確認します
次のコマンドは、プロセスを使用してほとんどのメモリを表示します、%MEM
1列目、PID
システムで実行中のすべてのプロセスについて、2番目の列にコマンドを、3番目の列にコマンドを入力します。
$ ps -eo pmem,pid,cmd | sort -k 1 -nr
02)特定のプロセスIDのすべてのスレッドを表示します
これにより、特定のプロセスpidのすべてのスレッドが表示されます。
$ ps -Lf -p 3482
03)親プロセスの子を表示します
これにより、プロセスのすべての子プロセスが表示され、このメインプロセスからフォークされたプロセスを見つけるのに役立ちます。
$ ps -o pid,pcpu,pmem,uname,comm -C apache2
04)プロセスの実行時間を表示します
次のコマンドは、「mysql」プロセスがシステムで実行されている時間を示します。
$ ps -e -o pid,comm,etime | grep mysql
3107 mysqld_safe 18-07:01:53
3469 mysqld 18-07:01:52
-
etime
:プロセスが開始されてからの経過時間([[DD-] hh:] mm:ssの形式)。 -
etimes
:プロセスが開始されてからの経過時間(秒単位)。
05)セキュリティ情報を取得する
サーバーに現在ログオンしているユーザーを確認する場合は、psコマンドを使用して確認できます。
$ ps -eo pid,user,args
これで、以下のコマンドでpidをそれぞれのsystemdユニットにマップできます:
$ ps -e -o pid,unit,cmd
結論
pstree(またはps -axjfを使用)とpgrepは、実行中のプロセスに関する情報を取得するのに役立つ追加のコマンドです。
ウォッチコマンドを使用してリアルタイムモニターとしてpsを使用できます。たとえば、CPUでプロセスをフィルタリングしたい場合、メモリ使用量レポートは1秒ごとに更新されます。
$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu’
このチュートリアルでは、Linuxでpsコマンドを使用する多くの方法を学びました。すべてのオプションについては、psのマニュアルページを参照してください。読んでいただきありがとうございます。以下のコメントセクションに提案を残してください。