2016-08-12 6 views
1

スクリプトを実行しているかどうかを確認するスクリプトを作成しました。そうでなければ、プロセスを開始します。だから私は、プロセスがrunnigされているかどうかを確認するには、次のコマンドをps aux | 2つの同様のプロセスの間のgrep

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 

それはA見つかった場合、このコマンドは、私に1を返し は、私はこのように実行されているいくつかのプロセスを考えてみましょうプロセス実行中。 バックアップコンシューマーを使用し始めた頃には、最近までうまくいきました。 バックアップコンシューマが実行されている場合、このコマンドはコンシューマが実行されていなくても1を返します。

ps auxで正確な単語をgrepする方法を教えてください。 私のコマンドが正しい結果をもたらすように。

+0

関連:[結果を変数に代入するときの改行数の違い](http://stackoverflow.com/q/37132097/1983854)事は 'ps | grep 'はサブシェルを実行し、それも返されます。 – fedorqui

答えて

2

いくつかの研究をして、私は答えを得た。検索語に「$」を使用すると、必要なことが実行されます。 $は、検索用語がそこで終わることを示します。

同様に、promotionalSecondとnot backupだけをチェックしたい場合、次のコマンドは完全に動作します。

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

ニース!そして、 'grep -w" [c] onsumer ...と言うことでパイプを1つ省略することができます。 wc -l' – fedorqui

関連する問題