psコマンドでプロセスツリーを表示し、プロセスグループ、セッション情報を確認する方法をまとめました。プロセスグループ、セッションとは何か?についてもコマンドの説明の後にまとめました。
※目次をクリックすると目次の下部にコンテンツが表示されます。
psコマンドのオプション、表示される項目
●オプション
psコマンドに下記オプションを指定します。
ps -ejH
※オプションの説明
-e
全てのプロセスを選択する。-Aと等しい。
-j
jobsフォーマット。
-H
プロセスを階層表示する
●表示される項目
PID:プロセスのプロセスID番号
PGID:プロセスグループID。(プロセスグループリーダのプロセスIDと等しい。)
SID:セッションID。(セッションリーダのプロセスID と等しい。)
TTY:制御端末(tty)
TIME:累積したCPU 時間
CMD:実行コマンド
psコマンドに下記オプションを指定します。
ps -ejH
※オプションの説明
-e
全てのプロセスを選択する。-Aと等しい。
-j
jobsフォーマット。
-H
プロセスを階層表示する
●表示される項目
PID:プロセスのプロセスID番号
PGID:プロセスグループID。(プロセスグループリーダのプロセスIDと等しい。)
SID:セッションID。(セッションリーダのプロセスID と等しい。)
TTY:制御端末(tty)
TIME:累積したCPU 時間
CMD:実行コマンド
プロセスグループ、セッションとは?
●プロセスグループとは?
・一つ以上のプロセスの集まり。
・各プロセスグループには、一意なプロセスグループIDが付いている。
・プロセスグループIDとプロセスIDが等しいプロセスが、プロセスグループリーダ。
・プロセスグループリーダはプロセスグループを作成し、グループ内にプロセスを作成したり終了したりできる。
・プロセスグループのプロセスは、普通、シェルのパイプラインでプロセスグループにまとめられている。
●セッションとは?
・セッションは、一つ以上のプロセスグループの集まり。
・一つ以上のプロセスの集まり。
・各プロセスグループには、一意なプロセスグループIDが付いている。
・プロセスグループIDとプロセスIDが等しいプロセスが、プロセスグループリーダ。
・プロセスグループリーダはプロセスグループを作成し、グループ内にプロセスを作成したり終了したりできる。
・プロセスグループのプロセスは、普通、シェルのパイプラインでプロセスグループにまとめられている。
●セッションとは?
・セッションは、一つ以上のプロセスグループの集まり。
出力例
①psコマンドでプロセスツリーを表示し、プロセスグループ、セッションを確認
$ ps -ejH PID PGID SID TTY TIME CMD 20412 20412 20412 ? 00:00:00 httpd 20414 20414 20414 ? 00:00:00 PassengerWatchd 20417 20417 20414 ? 00:00:00 PassengerHelper 20419 20417 20414 ? 00:00:11 ruby 20422 20422 20414 ? 00:00:00 PassengerLoggin 20429 20412 20412 ? 00:00:07 httpd 20430 20412 20412 ? 00:00:08 httpd
上記のようにプロセスがプロセスの親子関係を基に階層表示されます。プロセスグループが複数のプロセス、セッションが複数のプロセスグループで構成されている事が分かるかと思います。
②セッションリーダを確認
sshのターミナルウィンドウで”tail -f msg | grep test”を実行した場合のプロセス階層を表示してみます。
①の”ps -ejH”では、親プロセスIDが表示されないので、psコマンドで個別に表示項目を指定して親プロセスIDも表示してみます。
$ ps -eo pid,pgid,sid,ppid,cmd -H PID PGID SID PPID CMD 13785 13785 13785 1 /usr/sbin/sshd 19237 19237 19237 13785 sshd: rails [priv] 19279 19237 19237 19237 sshd: rails@pts/1 19280 19280 19280 19279 -bash 20069 20069 19280 19280 tail -f msg 20070 20069 19280 19280 grep test
“bash”のプロセスがセッションリーダーとなって、”tail -f msg | grep test”のプロセスグループを実行していることが読み取れます。
-
システム管理
- CentOSのブートの流れ、ランレベルの指定
- CentOS6のrc.sysinitスクリプトの処理内容の概要
- procファイルシステムの概要
- sysctlコマンドでカーネルパラメータの参照、変更
- cron、anacronで自動定期実行
- at、batchコマンドの概要
- CentOS6のシステムログ
- rsyslogの設定方法
- システムログのローテート設定
- CentOSのハードウェア情報を表示するコマンド
- CentOSでパーティション、スワップ、ディスク情報を確認
- LinuxのLVMの概要と表示コマンド
- ボリュームグループ、論理ボリューム作成、ファイルシステム作成、マウント設定、物理ボリュームを追加
- CentOSで論理ボリューム、ext4ファイルシステムを拡張
- CentOSのLVMでボリュームグループから物理ボリュームを削除
- WindowsからCentOS6にリモートデスクトップする手順
- viエディタの使用方法
- HTMLのマニュアルをLinuxのターミナル画面上で読む
- findコマンドで直近に更新されたファイルを調べる方法
- Linuxでディスク使用量が多いディレクトリを調べる方法(1)
- Linuxでディスク使用量が多いディレクトリを調べる方法(2)
- psコマンドで全プロセスを表示する方法と表示結果の見方
- プロセス階層、プロセスグループ、セッションを確認するには?
- psコマンドでスレッドに関する情報を表示するには?
- netstat、nmapを使ってリッスンポートを確認する方法
- vmstatコマンドでシステムの状況をモニター
- シェル変数と環境変数の違い
- CentOSのユーザー環境設定ファイル(bashrc、profile)
- 日本語設定、シェル環境設定
- umaskはどこで設定されている?
- CentOS6の各種ネットワーク設定ファイルとインタフェース制御スクリプト
- CentOS6のTCPラッパーの概要と設定方法
- LinuxのNetworkManagerプロセスの概要
- CentOS6のユーザー管理の概要とコマンド操作
- ファイルのパーミッション設定、ディレクトリは要注意
- Linuxでスティッキービットが設定されているか確認する方法
- sudoで特定のコマンドのみをroot権限で実行する
- RHEL6、CentOS6の64ビットサポートとhuge pages
- RHEL6、CentOS6の64ビットサポートとNUMA
Linuxコマンド操作
シェル環境設定
ネットワーク関連
ユーザー管理、権限
64ビットサポート
-
CentOSの概要
- RHEL6、CentOS6の64ビットサポートとhuge pages
- RHEL6、CentOS6の64ビットサポートとNUMA
- CentOS6インストール手順のメモ
- CentOSのブートの流れ、ランレベルの指定
- procファイルシステムの概要
- sysctlコマンドでカーネルパラメータの参照、変更
- CentOS6の各種ネットワーク設定ファイルとインタフェース制御スクリプト
- cron、anacronで自動定期実行
- at、batchコマンドの概要
- CentOS6のシステムログ
- rsyslogの設定方法
- システムログのローテート設定の確認
- CentOSのハードウェア情報を表示するコマンド
- CentOSでパーティション、スワップ、ディスク情報を確認
- LinuxのLVMの概要と表示コマンド
- ボリュームグループ、論理ボリューム作成、ファイルシステム作成、マウント設定、物理ボリュームを追加
- CentOSで論理ボリューム、ext4ファイルシステムを拡張
- CentOSのLVMでボリュームグループから物理ボリュームを削除
- WindowsからCentOS6にリモートデスクトップする手順
- viエディタの使用方法
- HTMLのマニュアルをLinuxのターミナル画面上で読む
- findコマンドで直近に更新されたファイルを調べる方法
- Linuxでディスク使用量が多いディレクトリを調べる方法(1)
- Linuxでディスク使用量が多いディレクトリを調べる方法(2)
- ディスク使用量が多いディレクトリを抽出するbashスクリプト
- psコマンドで全プロセスを表示する方法と表示結果の見方
- プロセス階層、プロセスグループ、セッションを確認するには?
- psコマンドでスレッドに関する情報を表示するには?
- netstat、nmapを使ってリッスンポートを確認する方法
- 日本語設定、シェル環境設定
- CentOSのユーザー環境設定ファイル(bashrc、profile)
- umaskはどこで設定されている?
- シェル変数と環境変数の違い
- CentOSのネットワークフィルタリング設定を一から行う
- CentOS6のTCPラッパーの概要と設定方法
- CentOS6のユーザー管理の概要とコマンド操作
- ファイルのパーミッション設定、ディレクトリは要注意
- Linuxでスティッキービットが設定されているか確認する方法
- sudoで特定のコマンドのみをroot権限で実行する
システム管理
Linuxコマンド操作
シェル環境設定
ネットワーク関連
ユーザー管理、権限