ウェブサイト検索

初心者のための Linux pgrep コマンド チュートリアル (10 の例)


このページでは

  1. Linux の pgrep コマンド
  2. Q1.特定のユーザーが所有するプロセスのIDを見つける方法は?
  3. Q2.一致するプロセスのpgrep印刷カウントを作成するには?
  4. Q3.出力でカスタム区切り文字を使用するには?
  5. Q4. pgrep検索で大文字と小文字を区別しないようにするには?
  6. Q5. pgrepリストのプロセス名も作成する方法は?
  7. Q6.同様にpgrep list fullコマンドを作成するにはどうすればよいですか?
  8. Q7. pgrepに最新のプロセスのみを表示させるには?
  9. Q8.どのようにpgrepに最も古いプロセスのみを表示させるのですか?
  10. 結論

パターンを検索し、一致するテキストを出力に出力する Linux の grep コマンドについては、すでにご存知かもしれません。この種の処理を適用して、システムで現在実行中のプロセスに関する選択した情報を取得する必要がある場合はどうなるでしょうか?

まさにこれを可能にするコマンドライン ツール pgrep が存在することを知ってうれしいでしょう。このチュートリアルでは、いくつかのわかりやすい例を使用して、pgrep の基本について説明します。ただし、その前に、ここにあるすべての例が Ubuntu 20.04 LTS マシンと Debian 10 でテストされていることに言及する価値があります。

Linux の pgrep コマンド

Linux の pgrep コマンドを使用すると、ユーザーは名前やその他の属性に基づいてプロセスを検索できます。その構文は次のとおりです。

pgrep [options] pattern

ツールのマニュアルページでの説明は次のとおりです。

pgrep looks through the currently running processes and lists the process IDs which match the 
selection criteria to stdout. All the criteria have to match.

以下は、pgrep コマンドがどのように機能するかを理解するための Q&A スタイルの例です。

Q1.特定のユーザーが所有するプロセスのIDを見つける方法は?

これは、-u コマンドライン オプションを使用して実行できます。たとえば、ユーザー himanshu が所有する gedit プロセスの ID を見つけるには、pgrep を次のように使用します。

pgrep -u himanshu gedit

私の場合、このコマンドが生成した出力は次のとおりです。

Q2.一致するプロセスのpgrep印刷カウントを作成するには?

ツールで ID 自体ではなくカウントのみを出力する場合は、-c コマンドライン オプションを使用します。たとえば、ユーザー himanshu が所有するプロセスの数を確認するには、次のコマンドを実行します。

pgrep -c -u himanshu

以下は、このコマンドが私のシステムで生成した出力です。

83

Q3.出力でカスタム区切り文字を使用するには?

デフォルトでは、出力のプロセス ID は改行で区切られます。ただし、必要に応じて区切り文字を変更できます。これは、-d コマンドライン オプションを使用して行うことができます。

たとえば、区切り文字としてコロン (:) を使用したかったので、pgrep コマンドを次のように実行しました。

pgrep -u himanshu -d:

以下は、コマンドが生成した出力です。

1793:1794:1807:1811:1813:1817:1820:1914:1917:1922:1925:1936:1938:1954:1974:1978:1980:1982:1993:1999
:2008:2009:2012:2020:2024:2034:2036:2043:2048:2049:2051:2052:2055:2064:2068:2073:2074:2085:2088:
2093:2094:2095:2098:2101:2104:2117:2125:2161:2162:2168:2173:2182:2201:2213:2233:2245:2266:2279:
2388:2409:2430:2456:2473:2564:2647:3085:3108:3178:3284:3297:3320:3325:3467:3487:3980:4040:4658:
5668:5721:5777:6271:6281:6512:6808

Q4. pgrep検索で大文字と小文字を区別しないようにするには?

デフォルトでは、pgrep 検索は大文字と小文字を区別します。ただし、必要に応じて、大文字と小文字を区別しないようにすることができます。これには、-i コマンド ライン オプションを使用する必要があります。

例えば:

pgrep -i gedit

Q5. pgrepリストのプロセス名も作成する方法は?

これには、-l コマンド ライン オプションを使用します。

例を次に示します。

pgrep -u himanshu -l

私のシステムで生成された出力の抜粋を次に示します。

1793 systemd
1794 (sd-pam)
1807 gnome-keyring-d
1811 gdm-x-session
1813 Xorg
1817 dbus-daemon
1820 gnome-session-b
1914 ssh-agent
1917 gvfsd
1922 gvfsd-fuse
1925 at-spi-bus-laun
1936 dbus-daemon
1938 at-spi2-registr
1954 gnome-shell
1974 ibus-daemon
1978 ibus-dconf
1980 ibus-x11
1982 ibus-portal
1993 gnome-shell-cal
1999 evolution-sourc
2008 dconf-service
2009 gvfs-udisks2-vo
2012 goa-daemon
2020 gvfs-mtp-volume
2024 gvfs-goa-volume
...
...
...

プロセス ID に加えて、プロセス名も出力されていることがわかります。

Q6.同様にpgrep list fullコマンドを作成するにはどうすればよいですか?

各プロセスの起動に使用された完全なコマンドを pgrep に表示させたい場合は、 -a コマンドライン オプションを使用します。

pgrep -u himanshu -a
1793 /lib/systemd/systemd --user
1794 (sd-pam)
1807 /usr/bin/gnome-keyring-daemon --daemonize --login
1811 /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SHELL_SESSION_MODE=ubuntu gnome-session --session=ubuntu
1813 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
1817 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
1820 /usr/lib/gnome-session/gnome-session-binary --session=ubuntu
1914 /usr/bin/ssh-agent /usr/bin/im-launch env GNOME_SHELL_SESSION_MODE=ubuntu gnome-session --session=ubuntu
1917 /usr/lib/gvfs/gvfsd
1922 /usr/lib/gvfs/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes
1925 /usr/lib/at-spi2-core/at-spi-bus-launcher
1936 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
1938 /usr/lib/at-spi2-core/at-spi2-registryd --use-gnome-session
1954 /usr/bin/gnome-shell
1974 ibus-daemon --xim --panel disable
1978 /usr/lib/ibus/ibus-dconf
1980 /usr/lib/ibus/ibus-x11 --kill-daemon
1982 /usr/lib/ibus/ibus-portal
1993 /usr/lib/gnome-shell/gnome-shell-calendar-server
1999 /usr/lib/evolution/evolution-source-registry
2008 /usr/lib/dconf/dconf-service
2009 /usr/lib/gvfs/gvfs-udisks2-volume-monitor
2012 /usr/lib/gnome-online-accounts/goa-daemon
2020 /usr/lib/gvfs/gvfs-mtp-volume-monitor
2024 /usr/lib/gvfs/gvfs-goa-volume-monitor
2034 /usr/lib/gnome-online-accounts/goa-identity-service
2036 /usr/lib/gvfs/gvfs-gphoto2-volume-monitor
2043 /usr/lib/gvfs/gvfs-afc-volume-monitor

Q7. pgrepに最新のプロセスのみを表示させるには?

すべてのプロセスではなく、最新のプロセスのみを pgrep に出力させたい場合は、 -n コマンド ライン オプションを使用して実行できます。

例を次に示します。

pgrep -u himanshu -n -l

以下は、このコマンドが生成した出力です。

7163 thunderbird

Thunderbird が実際にユーザー himanshu によって起動された最新のプロセスであることを確認できます。

Q8.どのようにpgrepに最も古いプロセスのみを表示させるのですか?

これには、-o コマンドライン オプションを使用します。

pgrep -u himanshu -o -l

そして、このコマンドが生成した出力は次のとおりです。

1793 systemd

結論

したがって、pgrep が非常に役立つコマンドであることがわかります。ここで説明したコマンド ライン オプションの練習が終わったら、ツールのマニュアル ページに移動して詳細を確認できます。