終了後にプロセスを自動的に再起動するにはどうすればよいですか?


11

Debian Squeezeボックスで終了した後に再起動したいgolangプログラムがあります。問題は、Apache 2 mod_proxyセットアップの背後でHTTPを提供することです。プロセスが失敗するとは思わないが、それに対して何らかの保険をかけたい。

Ubuntuでは、upstartを使用してプロセスを維持していました。Debianは、initの代替品であるため、私が理解していることからUpstartが好きではありません。

Squeezeで動作し、initで適切に動作する、終了後に1つ以上のプロセスを再起動する代替手段はありますか?


質問を言い換えてください。終了したプロセスを再起動したいですか?
-mailq

プロセスに障害が発生したり、終了した場合、プロセスを自動的に再起動したいと思います。
削除

2
従来のinitプログラムはこれを正確に行います。initを使用して、同じことを行う別のプロセスを開始するシェルスクリプトを呼び出すシェルスクリプトを実行することをお勧めしますが、そのプロセスが失敗した場合に自動カーネルパニックと再起動が発生しない場合は、完全に私を超えています。
サイモンリヒター

それは公正な点です。同様にinitを使用して調査します。dpkgを使用してソフトウェアをパッケージ化しているので、initスクリプトを作成するのは難しくありません。
削除

回答:


10

それに行く最良の方法はdaemontools。プロセスを監視および再生成できます。

Webサイトのドキュメントを参照してください:http : //cr.yp.to/daemontools.html


1
おかげで-それはちょうど私が望んでいることです。DJB =原則として良好。私はqmailの世話を5年かけて過ごしたことで何が存在したかを実際に思い出すべきでした!
削除

私と同じですが、かなり以前からdjbdnの世話をしていたことを除きます。
mr.b

10

superviseは、軽量で効率的な代替手段です。debianでは、daemontoolsにパッケージ化されています。また、この関連する質問を読むこともできます。この質問には、いくつかの監督の批判がリストされており、別の可能性として再開が言及されています。

最後に、信じられないほど簡単にセットアップしたい場合は、monitで大成功を収めました。Debianにパッケージ化されています


2
daemontoolsは素晴らしいです。monitは、「なぜ地獄は始まらないのか!?」という恐ろしい悪夢です。欲求不満。
ウォンブル

2

superviseまたはmonitは、単一のプロセスを存続させるのに適しています。「1つ以上」のプロセスを存続させるように求めているので、supervisordをプラグインます。単一のプロセスを管理するのは確かにやり過ぎですが、複数のプロセスを追跡する必要がある場合は、それが問題になる可能性があります。


2

1つのオプションは/etc/inittab、スクリプトをに入れる代わりに使用することです/etc/init.d/

次の形式でエントリを追加するだけです。

<jobname>:<runlevels>:respawn:<command>

残念ながら、これは通常のstart / stop / restart initコマンドを使用できないことを意味しますが、スクリプトが常に実行されていることを確認する必要があります。


2

プロセスの再起動を処理するクロスディストリビューションの方法は、cronと単純なスクリプトを使用することです。Linuxでジョブを実行し続ける方法については、こちらをご覧ください。

スクリプトは次のようになります

#!/bin/bash 
# make-run.sh 
# make sure a process is always running.  
# Add the following to the crontab (i.e. crontab -e)
# */5 * * * * /home/path_to_make_run/make-run.sh

process=servermonitoringhq 
makerun="/home/path_to_the_job_you_want_running/runjob.sh"  

if pgrep $process > /dev/null         
then                 
  exit         
else         
  $makerun &         
fi 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.