GNU/Linux >> Linux の 問題 >  >> Linux

LinuxでプロセスのPIDとPPIDを見つける方法

システムで実行されているプロセスを管理または操作する必要がある場合は、プロセスのPIDとPPIDを知っておくと役立ちます。

Linuxで特定のプロセスのPID(プロセスID)とPPID(親プロセスID)を取得する方法はたくさんあります。

コマンド 説明
pidof process_name 正確なプロセス名で動作します
pgrep process_name すべての一致のPIDを返します
ps -o ppid =-p PID PIDからPPIDを取得
$$ 現在のプロセス/シェルのPID
$ {PPID} 現在のプロセスの親のPID

これらのコマンドについて詳しく説明しますが、その前に、プロセス、PID、およびPPIDについて簡単に要約します。

Linuxプロセスの基本

システムで実行されるものはすべて、プロセスと呼ばれるものを介して実行されます。これは、単にプログラムの実行中のインスタンスです。

システムで実行されるすべてのプロセスには、識別子が割り当てられます。これらは、プロセスを監視する場合(たとえば、使用しているメモリやCPUの量を確認する場合など)、またはプロセスがハングし始めた場合や少しファンキーな動作をした場合にプロセスを終了したい場合に役立ちます。

これらすべてのプロセスに関連付けられる識別子は、PIDおよびPPIDと呼ばれます。

PIDとは何ですか?

PIDは「プロセスID」の略です。繰り返しになりますが、これは単にプログラムの実行開始時にプログラムに付加される識別子であり、何らかの方法でプロセスと対話する必要がある場合に役立ちます。

PPIDとは何ですか?

PPIDはPIDと非常に密接に関連しています。 PPIDは「親プロセスID」の略で、まだ取得していない場合は、単に作成したプロセスの略です。 チェックしているプロセス。

たとえば、2つのプロセスがあるとします。 1つは「spawner」という名前で、プロセスID(またはPID)は7234です。2番目のプロセス「emailclient」は、作成時に7456のプロセスIDを持っています。スポナープログラムは電子メールクライアントを起動します。その結果、電子メールクライアントは7456のPIDと7234のPPIDになります。これは、スポナー(PIDが7234)が電子メールクライアントを生成したためです。

基本をブラッシュアップしたので、LinuxでプロセスIDを取得する方法を見てみましょう。

プロセスのPIDを取得する

ここで重要なことは、PIDを見つけたいプロセスの名前を知ることです。

正確なプロセス名を知っている場合pidofを使用してプロセスIDを取得できます コマンド:

pidof exact_process_name

正確なプロセス名が常にわかっているとは限らないため、言うのは簡単です。ここでの良い点は、pidof コマンドはタブ補完で機能するため、プロセス名の最初の数文字がわかっている場合は、Tabキーを押して一致する候補を取得できます。

ただし、プロセス名があなたが呼んでいると思うものと一致しない場合、それは常に機能するとは限りません。たとえば、LinuxでのEdgeブラウザのプロセスはmsedgeと呼ばれます 。 「エッジ」で始まらないため、「エッジ」にフォーカスするとタブ補完は機能しません。

したがって、Linuxでpsコマンドを使用して、すべてのユーザーから実行中のすべてのプロセスを一覧表示し、出力でgrepを使用して結果をフィルタリングすることができます。

ps aux | grep -i partial_process_name

機能psとgrepコマンドを組み合わせた専用コマンドがあり、当然のことながらpgrepと呼ばれます。 :

pgrep partial_or_exact_process_name

デフォルトの出力には、プロセスに関する情報なしでPIDのみが表示されます。検索された用語に対して複数のプロセスIDが返される場合、これは問題になる可能性があります。

したがって、リスト機能を使用して、目的のプロセスのPIDを取得していることを確認することをお勧めします。

pgrep -l partial_or_exact_process_name

topコマンドを使用してプロセス情報を取得することもできますが、スクリプトでは使用できません。

💡pstreeコマンドを使用して、Linuxシステムで実行中のすべてのプロセスのPIDを取得できます:pstree -p -a

子プロセスのPIDからPPIDを取得する

プロセスのPIDがわかれば、そのプロセスのPPIDを簡単に見つけることができます。

PIDを置き換えて、次のコマンドを実行するだけです。 現在のプロセス(子)ID:

ps -o ppid= -p PID

シェルでは、上記のコマンドと${PPID} 両方とも同じ出力を返す必要があります:

これで、PIDとPPIDを見つけることができます。

現在実行中のプロセスのPIDとPPIDを確認する

Bashなどのシェルを使用している場合は、呼び出しプロセスのPIDとPPID(通常はシェルになります)を見つけるのは非常に簡単です。

Bashは、PIDの値を$$に保存します 変数、および${PPID}の下のPPID 変数:

# Prints the PID.
echo "$$"

# Prints the PPID.
echo "${PPID}"

このようにして、シェルとサブシェルのプロセスIDを取得できます。

そして、それはとても簡単です!他のプロセスのPIDとPPIDを見つけることもそれほど難しくありません。

まとめ

これで、システムでプロセスを実行するためのPIDとPPIDの両方を見つけるために必要なすべてのことを理解する必要があります。

何かを機能させるためのサポートが必要な場合、または残りの質問がある場合は、下のコメントにそれと他の何かを残してください。


Linux
  1. OSとLinuxのバージョンを確認する方法

  2. Linuxでのコマンドまたはプロセスの実行時間を検索する

  3. CからLinuxでPIDによってプロセスのCPU使用率を計算する方法は?

  1. Linux で「find」の結果を mv にパイプする方法

  2. プロセスの pid を取得し、シェル スクリプトで kill -9 を呼び出す方法は?

  3. Linuxで1つのプロセスのすべてのスレッド(および子)を解放する方法は?

  1. Linuxでゾンビプロセスを見つけて殺す方法

  2. Ubuntu でプロセス ID を見つけるにはどうすればよいですか?

  3. 特定のプロセスの .pid ファイルを見つける方法