web-dev-qa-db-ja.com

ps内の特定のプロセスのgrepですが、grepコマンド自体はありません

何かが実行されているかどうかを確認したい場合は、ps aux | grep flamethrowerを実行し、名前にflamethrowerを含むプロセスを表示することを期待します。 grep flamethrowerがこの基準に一致するため、これは常に少なくとも1つのプロセスを検出します。

cleanerの方法で特定のプロセスをチェックする方法はありますか?

2
Daedalus Mythos

通常は pgrep を使用します。

$ pgrep init
1
2215
6300
$ ps ax | grep init
    1 ?        Ss     6:41 /sbin/init
 2215 ?        Ss     1:54 init --user --restart --state-fd 26
 6300 ?        S      0:00 init --user --startup-event indicator-services-start
17522 pts/10   S+     0:00 grep --color=auto init

pgrepおよび-fで使用する場合は、watchでも他のトリックを使用する必要がある場合があることに注意してください。

$ watch pgrep init -fa
Every 2.0s: pgrep init -fa                                                                                                                                                                                               
Wed Dec  3 19:19:47 2014

1 /sbin/init
2215 init --user --restart --state-fd 26
6300 init --user --startup-event indicator-services-start
18233 watch pgrep init -fa
18234 watch pgrep init -fa
18235 sh -c pgrep init -fa
$ watch pgrep [i]nit -fa
Every 2.0s: pgrep [i]nit -fa                                                                                                                                                                                           Wed Dec  3 19:20:42 2014

1 /sbin/init
2215 init --user --restart --state-fd 26
6300 init --user --startup-event indicator-services-start
3
muru