pidofとpgrepの違いは何ですか?

pidofとpgrepの違いは何ですか?

引数をプロセス名として使用して、これらのコマンドを使用すると、すべてがまったく同じ数値を返します。同じコマンドですか?同じことを行う2つの異なるコマンドですか? 1つはもう1つのエイリアスですか?

pidof firefox
pgrep firefox

ベストアンサー1

これらのプログラムpgrepと手順はpidofまったく同じではありませんが、非常に似ています。たとえば、

$ pidof 'firefox'
5696
$ pgrep '[i]ref'
5696
$ pidof '[i]ref'
$ printf '%s\n' "$?"
1

ご覧のとおり、一致pidofするものはありません[i]ref。これはpidof program、名前付きプログラムに関連するすべてのプロセスIDのリストが返されるためですprogram。一方、pgrep re名前が正規表現に一致するプログラムに関連するすべてのプロセスIDのリストを返しますre

最も基本的な形で見ると、実際には次のようになります。

$ pidof 'program'
$ pgrep '^program$'

別の具体的な例として、以下を考えてみましょう。

$ ps ax | grep '[w]atch'
   12 ?        S      0:04 [watchdog/0]
   15 ?        S      0:04 [watchdog/1]
   33 ?        S<     0:00 [watchdogd]
18451 pts/5    S+     0:02 watch -n600 tail log-file
$ pgrep watch
12
15
33
18451
$ pidof watch
18451

おすすめ記事