grep 用于 ps 中的特定进程,但不是 grep 命令本身

grep 用于 ps 中的特定进程,但不是 grep 命令本身

如果我想检查某些东西是否正在运行,我会这样做,希望只显示名称中ps aux | grep flamethrower包含的进程。flamethrower这将始终找到至少一个grep flamethrower符合此条件的进程。

有没有某种方法可以检查特定进程清洁工方式?

答案1

通常的方法是使用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请注意,如果您将它与watchand一起使用,您可能还需要使用其他技巧-f

$ 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

相关内容