は、

2017-10-09 1 views
0

グッドモーニングbashスクリプトでは、

コンテキストをコマンドresultatsをgrepすることはできません。私のcronでは、私はスクリプトを呼び出します。スクリプトの目的は、プロセスが実行中であるかどうかを確認することです。

マイスクリプト:このスクリプトでは

#!/bin/bash 
DIR="path/to/directory" 
CMD="python3 -u $DIR/script.py -arg1 $DIR/arg1 -arg2 $DIR/arg2 -arg3 $DIR/arg3" 

if [ ! $(ps aux | grep 'my_pattern' | grep -v 'color')] 
then 
    echo "Success" 
    "$CMD" > /dev/null 
fi 

私は、プロセスをgrepし、カラープロセスを除外するためにはgrepを逆にしたいです。プロセスが実行されている場合、コマンド(ps aux | grep 'my_pattern' | grep -v 'color')は私に何かを返します。

エラーが./script.shです:行12:![MYUSER +:ブラックサイトコマンド

コマンドの実行は私にコマンドの結果を返しませんでしたが、私のコマンドのプロセス番号のような場合、私は、私の命令のps auxをしました。

明らかでない場合は、問題を翻訳するのが難しいですか。

ありがとうございます。

EDIT:

if [[ -z $(ps aux | grep 'my_pattern' | grep -v 'color') ]] 

今、私はすべてのエラーを持っていないが、それは私の場合の条件に入ることはありません:私はこのようなocnditionを適用HAVE。

if [[ -z $(ps aux | grep 'my_pattern' | grep -v 'color') ]]

(klashxxによって示されるように、タイプミスを気)

変数が空であるかどうかをチェックすることができますして

+3

あなたは** typo **: '' color ')] '' ''' '' '色でなければなりません)] ' – klashxx

答えて

0

"!"を使用する代わりに、ps auxのグロッピングが空の文字列を返すかどうかを確認する方が適切で効果的だと思います。

これがあなたを助けたかどうか教えてください。

EDITED:AGAIN「[[」

EDITEDに「[」訂正:uは、このメソッドを使用してプロセスのexistanceをチェックする必要があるかどうかを知るために、他のユーザーのために、どうかを確認するために-zフラグの前!を追加それは空ではありません

+0

お返事ありがとうございます。 あなたは私をうまく助けてくれますが、私は新しい問題があります(それは良いことです)。 ./script.sh:12行目:[:あまりにも多くの引数 – Thibaud

+0

私の間違い、その[['と[.... and obv]]ではなく] –

+0

心配しないで、私はすでにこれを試してみましたあなたの答えの後に。 エラーはありませんが、if条件に入ることはありません... ありがとうございます – Thibaud