Unix ps aux | grep在两个类似过程之间

Unix ps aux | grep在两个类似过程之间,unix,grep,ps,Unix,Grep,Ps,我已经编写了一个脚本,用于检查进程是否正在运行。如果没有,则启动该过程。 假设我有几个进程是这样运行的: root 5780 0.0 2.2 3168184 85828 ? Sl 09:02 0:15 /usr/bin/java -jar /home/vtermina/private/crons/jar/consumer-1.0.jar promotionalSecond root 5780 0.0 2.2 3168184 85828 ?

我已经编写了一个脚本,用于检查进程是否正在运行。如果没有,则启动该过程。 假设我有几个进程是这样运行的:

root      5780  0.0  2.2 3168184 85828 ?       Sl   09:02   0:15 /usr/bin/java -jar /home/vtermina/private/crons/jar/consumer-1.0.jar promotionalSecond

root      5780  0.0  2.2 3168184 85828 ?       Sl   09:02   0:15 /usr/bin/java -jar /home/vtermina/private/crons/jar/consumer-1.0.jar promotionalSecond backup

root      8989  0.0  1.4 2966364 57540 ?       Sl   09:04   0:07 /usr/bin/java -jar /home/vtermina/private/crons/jar/update-report-1.0.jar Rb1 backup
因此,我使用以下命令检查进程是否正在运行:

ps uax|grep -w "consumer-1.0.jar promotionalSecond" |grep -v grep|wc -l
如果发现某个进程正在运行,该命令将返回一个。 直到最近,当我也开始使用一些备份消费者时,它还可以正常工作。 现在,如果备份使用者正在运行,则此命令返回1,即使使用者未运行

如何在ps aux中查找准确的单词。
这样我的命令就能给出正确的结果。

做了一些研究,我得到了答案。在搜索词中使用“$”,不需要做什么。$指示搜索词到此结束

比如,若我只想检查PromotionSecond而不想检查backup,那个么下面的命令可以很好地工作

ps uax|grep -w "consumer-1.0.jar promotionalSecond$" |grep -v grep|wc -l

相关:。问题是,
ps | grep
运行一个子shell,它也会被返回。很好!您可以省略一个管道,方法是说
grep-w“[c]onsumer…Second$”|wc-l