システムで実行されているプロセスを管理または操作する必要がある場合は、プロセスの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を見つけたいプロセスの名前を知ることです。
正確なプロセス名を知っている場合 、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
を置き換えて、次のコマンドを実行するだけです。 現在のプロセス(子)ID:
ps -o ppid= -p 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の両方を見つけるために必要なすべてのことを理解する必要があります。
何かを機能させるためのサポートが必要な場合、または残りの質問がある場合は、下のコメントにそれと他の何かを残してください。