引数をプロセス名として使用して、これらのコマンドを使用すると、すべてがまったく同じ数値を返します。同じコマンドですか?同じことを行う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