シェルスクリプト(bash)メモ

サーバー上で、あるプロセスが複数個起動したままになる可能性があるので、それを監視したいと思った。

1個以上起動しているかどうかを確認するには、
ps ax | grep target | wc -l
で2以上の値が帰ってくるかどうかでわかる。
一個目は、"grep target" 自身にひっかかるので、2個以上とするのがポイント。

さて、2以上の時にメールを飛ばすなりアクションを起こすように持って行きたい。
Perl でやるのが簡単ではあったが、こういうのはシェルスクリプトでやるのがカッコいいのではと思った。
(単にふだん使わない言語を使ってみたいだけかも)

#!/bin/bash
test=`ps ax | grep target | wc -l`
if [ $test >= 2 ];
then
echo 'error!';
fi

こんな感じで書くとエラーになった。
どうも、[ $test >= 2 ] の部分がエラーらしい。
[ $test ge 2 ]でもダメだった。
調べてみたら、-ge というのが正解でした。先頭のハイフンが必要でした!

参考:
http://cyberam.dip.jp/linux_command/shellscript/shellscript_main.html

というわけで、

#!/bin/bash
test=`ps ax | grep target | wc -l`
if [ $test -ge 2 ];
then
echo 'error!';
fi

が正解。
こんなのでも出来るとうれしい。