技術ノート Linux pidof または pgrep を使用して Linux プロセスの PID を見つける方法

pidof または pgrep を使用して Linux プロセスの PID を見つける方法

pidof または pgrep を使用して Linux プロセスの PID を見つける方法

重要なポイント

pidof または pgrep を使用して Linux プロセスの PID を見つける方法

Linux プロセスのプロセス ID を確認するには、「pidof examplename」のように pidof コマンドを使用します。 PID 名の一部しかわかっていない場合は、代わりに「pgrep examplenamefragment」を使用できます。 「examplename」と「examplenamefragment」を検索したい用語に置き換えます。

pidof または pgrep を使用して Linux プロセスの PID を見つける方法

Linux プロセスを操作するということは、多くの場合、そのプロセス ID (PID) を知ることを意味します。これは、実行中のソフトウェアごとに与えられる固有の番号です。それが何であるかを調べる方法は 2 つあります。

Linux プロセス ID とは何ですか?

Linux は内部的に、プロセス ID または PID と呼ばれる一意の ID 番号を割り当てることで、実行中のプロセスを追跡します。実行中のすべてのアプリケーション、ユーティリティ、デーモンには PID があります。

PID は単純な整数値です。新しく開始されたプロセスは、最後に発行された PID より 1 つ大きい PID を受け取ります。したがって、最も高い PID を持つプロセスが最も新しい、つまり最も最近に起動されたプロセスになります。これは、システムが PID の最大値に達するまで続きます。

PID の上限は 32768 です。この数値に達すると、Linux は最初に戻り、以前に所有していたプロセスが終了したために空いている PID を探します。

PID が 1 のプロセスは、ブートプロセスによって Linux が起動されるときに最初に起動されるプロセスです。 systemd ベースのシステムでは、 systemd になります。他のシステムでは init である可能性が高くなりますが、一部の Linux ディストリビューションでは OpenRc s6 などの代替手段が使用されます。

プロセスの PID を検出すると便利な場合があります。通常、そのプロセスに対して何らかのアクションを実行する必要があるためです。プロセスの名前がわかっている場合にプロセスの PID を見つける 2 つの異なる方法を次に示します。

pidof または pgrep を使用して Linux プロセスの PID を見つける方法

pidof コマンドを使用して Linux PID を取得する方法

pidof コマンドは、「PID」と「of」を組み合わせたものと考えることができます。これは、このプロセスの PID は何ですか? と尋ねるようなものです。パラメーターを指定せずにコマンドを使用すると、何も行われません。何も言わずにコマンド プロンプトに戻ります。プロセス名を指定する必要があります。

ピドフバッシュ

pidof 、Bash シェルの PID が 8304 であることを示しています。これは ps コマンドで確認できます。パラメータを指定せずに ps 呼び出すだけです。現在のセッションで実行されているプロセスについてレポートします。

 ps

ps 、それ自体を含む、検出できるすべてのプロセスについてレポートするため、 bash プロセスと ps プロセスが実行中であることがわかります。ご想像のとおり、 bash プロセスには pidof が報告したものと同じ PID があります。

複数の端末ウィンドウを開いている場合、 pidof それらすべてについてレポートします。

ピドフバッシュ

PID は最高から最低の順、つまり最新のものから古いものへとリストされていることに注意してください。

これで分からないのは、あなたがこれらのプロセスすべての所有者ではない可能性があるということです。 pidof プロセスの所有者に関係なく、一致する名前を持つすべてのプロセスを検索します。出力を grep にパイプして詳しく見てみましょう。 ps -e (すべてのプロセスを選択) オプションと -f (完全なリスト) オプションを使用しています。

 ps -ef | grep bash

bash プロセスのうち 2 つはユーザー dave に属し、3 つ目はユーザー mary に属します。

場合によっては、1 つのアプリケーションが多数のプロセスを生成し、それぞれが独自の PID を受け取ることがあります。これは Google Chrome で得られるものです。

ピドフクロム

デフォルトでは、 pidof すべてのプロセスをレポートします。必要に応じて、それらのプロセスの最新のものだけを要求することもできます。 -s (シングルショット) オプションはまさにそれを行います。

 pidof -s クロム

kill コマンドを使用してすべての chrome プロセス を手動で強制終了する のは面倒です。プロセスのリストを変数にキャプチャすると、その変数を kill コマンドに渡すことができます。 kill コマンドはコマンドで複数の PID を受け入れることができるため、入力を喜んで受け入れ、すべてのプロセスを強制終了します。

 pid=$(クロムのpid)

 $pidをエコーする

$pidを殺す

ピドフクロム

最初のコマンドは、 pidof からの出力を収集し、それを変数に割り当てます。この変数に pid という名前を付けます。これを画面に echo 必要はありません。変数が何を保持しているかを示すためにこれを行っているだけです。

変数を kill コマンドに渡し、もう一度 pidof を使用して Chrome プロセスが残っているかどうかを確認します。彼らは全員殺されてしまった。

pidof の特徴の 1 つは、シェル スクリプトの PID を返さないことです。スクリプトを実行している bash シェルの PID を返します。スクリプトを実行しているシェルを確認するには、 -x (スクリプト) オプションを使用する必要があります。

 pidof -x スリープループ.sh

 ps -e | grep bash

pidof bash シェルの PID を返し、 ps 2 つのシェルが実行されていることを示します。 1 つは pidof コマンドを実行するシェルで、もう 1 つはスクリプトを実行するシェルです。

pidof または pgrep を使用して Linux プロセスの PID を見つける方法

Linux で pgrep コマンドを使用して PID を検索する方法

pgrep コマンドは、Linux でプロセス ID を取得する pidof と少し似た働きをします。ただし、検索手がかりに完全に一致するプロセスを見つけるだけでなく、名前に検索テキストが含まれるプロセスの PID も返します。

以下は、Firefox が実行されているコンピューターでの例です。

 pgrep Firefox

 pgrep の火

pgrepフォックス

pgrep 参照

これらのコマンドはすべて、Firefox プロセスを見つけて PID を返します。ただし、次のコマンドを入力したとします。

 pgrep 参照

pgrep が、たとえば p refor md という名前のダメオンではなく、Fi refo x を見つけたかどうかを、それ自体でどうやって知ることができるでしょうか?

-l (リスト名) オプションを追加すると、pgrep は PID と一緒にプロセス名をリストします。

 pgrep refo -l

一致するプロセスのインスタンスが複数ある場合は、それらがすべてリストされます。

 pgrep bash

これらは昇順でリストされており、 pidof からの出力とは逆の順序であることに注意してください。最も古いプロセスから新しいプロセスまでリストされます。 pidof で見たように、リストされたプロセスのすべてが必ずしもあなたのものであるとは限りません。

-u (ユーザー ID) オプションを使用すると、検索テキストに一致し、指定された が所有するプロセスを検索できます。

 pgrep bash -u dave

今回は、結果に 3 つの bash プロセスが表示されます。もう 1 つは mary によって使用されています。

 pgrep bash -u メアリー

ユーザー名をカンマ区切りのリストとして文字列化できます。

 pgrep bash -u dave、mary -l

また、特定のユーザーのすべてのプロセスを表示するように要求することもできます。

 pgrep -u dave -l

完全なコマンドラインを表示するには、 -a (完全なリスト) オプションを使用します。

 pgrep -u dave -a 

pidof または pgrep を使用して Linux プロセスの PID を見つける方法

PID の所有権について

すべてのシステム プロセスが root ユーザー によって所有されているわけではありません。もちろん、多くはそうなりますが、すべてではありません。たとえば、次のコマンドは機能します。

 pgrep avahi デーモン

しかし、このコマンドは失敗します。

 pgrep -u root avahi-daemon

root そのプロセスを所有していないため、失敗します。実際の所有者は「avahi」というシステムユーザーです。正しいユーザー名を使用すると、コマンドは機能します。

 pgrep -u avahi avahi デーモン

ちょっとした注意が必要です。

Linuxコマンド

ファイル

tar pv cat tac chmod grep diff sed ar man pushd popd fsck testdisk seq fd pandoc cd $PATH awk join jq fold uniq journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · パッチ · 変換 · rclone · シュレッド · srm · scp · gzip · chattr · カット · 検索 · umask · wc · tr

プロセス

エイリアス · スクリーン · トップ · ナイス · renice · 進行状況 · strace · systemd · tmux · chsh · 履歴 · at · バッチ · フリー · what · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · タイムアウト · ウォール · はい · キル · スリープ · sudo · su · タイム · groupadd · usermod · グループ · lshw · シャットダウン · 再起動 · 停止 · パワーオフ · パスワード · lscpu · crontab · 日付 · bg · fg · pidof · nohup · pmap

ネットワーキング

netstat ping ip ss whois fail2ban bmon dig finger nmap ftp curl wget who whoami w iptables ssh-keygen ufw arping firewalld

「 pidof または pgrep を使用して Linux プロセスの PID を見つける方法」に関するベスト動画選定!

【Linuxコマンドの基本02】一行で書くプログラム ワンライナー (この動画で解説してあるコマンド:grep sort uniq awk tee ps)
pidof および pgrep コマンドの使用方法: 2 分間の Linux ヒント