2012-11-10 11 views
5

バッシュを実行していない場合は、プロセスを実行します:アップチェック、バッシュ:、アップチェック

こんにちは、 を実行していない場合は私の要件は、Memcacheのサーバが生産に何らかの理由でダウンしている場合、私がしたい、ということであるプロセスを実行します

memcachedの-u誰も-l 192.168.1.1 -m 2076 -x 192.168.1.2 -v以下のようにすぐに

それを再起動するために一般的に私は、レプリケーションとnobodyとしてユーザーにこのようにMemcacheのサーバを起動します

したがって、このために私はこのよう

のcrontabにエントリを追加した(のcrontab -e)

*/5 * * * * /home/memcached/memcached_autostart.sh 

memcached_autostart.sh

#!/bin/bash 
ps -eaf | grep 11211 | grep memcached 
# if not found - equals to 1, start it 
if [ $? -eq 1 ] 
then 
memcached -u nobody -l 192.168.1.1 -m 2076 -x 192.168.1.2 -v 
else 
echo "eq 0 - memcache running - do nothing" 
fi 

私の質問をするために、memcached_autostart.sh内側にありますmemcachedサーバーを自動再起動すると、上記のスクリプトに問題はありますか?

それとも

これを達成する(というよりもcronジョブを使用して)ための任意のより良い方法がある場合は あなたの経験を共有してください。

答えて

3

はい、問題は、私が想定しps -eaf | grep 11211 | grep memcachedであるが、すべてが開始に常に変化し、プロセスIDであるので、あなたは何をすべきかと思い

3

cronから実行する代わりに、適切なinitスクリプトを作成することができます。例は/etc/init.d/を参照してください。また、これを行うならば、ほとんどのシステムは、すでに実行中のプロセスの開始、再起動、停止、チェックなど、ほとんどの作業を処理する機能を持っています。

ほとんどのデーモンスクリプトはpidを特別なファイルに保存します。 /var/run/foo)、そのファイルの存在を確認することができます。

Ubuntuでは、コピーできるスクリプトの例として/etc/init.d/skeletonが表示されます。

+0

を助けたps -ef | grep memcached

希望は 'daemon'と呼ばれる機能もあるあります'/ etc/init.d/functions'にあります。これはrunfile.pidも処理します。したがって、自動起動スクリプトから関数ファイルを取得し、デーモン関数を介してプログラムを呼び出すことをお勧めします。 – anishsane