Armadilloフォーラム

respawnの設定について

moto

2014年7月27日 21時25分

初めて投稿させていただきます。
田中と申します。

現在、Armadilloで作成したプログラムをArmadillo起動時に自動起動や再起動の設定をしております。
再起動の方法としてrespawnをinittabに設定することで起動と再起動ができるとなっておりますが、
具体的にroot/a.outを起動し不正終了時に再起動する際にはどのように設定すればよろしいでしょうか?
また、設定した内容は基本的に「&」をつけてバックグラウンドで実行されているものと同じになると考えてよろしいでしょうか?

最終的には、起動時にsystem logにメッセージを残して不正終了発生の時間を記録したいと考えておりますが、
スクリプトを書く際にはプログラムの起動部分は「&」をつけバックグラウンドで実行をさせる方がよろしいでしょうか?

基本的な質問となってしまい申し訳ございませんが、どうぞよろしくお願いいたします。

コメント

at_daisuke.sasaki

2014年8月7日 9時54分

佐々木大輔です。

> 具体的にroot/a.outを起動し不正終了時に再起動する際にはどのように設定すればよろしいでしょうか?

/etc/inittabに/root/a.outを実行するようなrespawnを記述すればよいです。

/etc/inittab

::sysinit:/etc/init.d/rc
 
::respawn:/sbin/getty -L 115200 ttymxc1 vt102
#::respawn:/sbin/getty 38400 tty1 linux
::respawn:/root/a.out               追加
 
::shutdown:/etc/init.d/reboot
::ctrlaltdel:/sbin/reboot

> また、設定した内容は基本的に「&」をつけてバックグラウンドで実行されているものと同じになると考えてよろしいでしょうか?

ご質問の意図は、「respawnで起動するプロセスをデーモンプロセスにしたい」という事で正しいですか?

> 最終的には、起動時にsystem logにメッセージを残して不正終了発生の時間を記録したいと考えておりますが、

initの実装として、プロセスが終了した時、再起動した時には以下のようなログが残るようになっています。
時間はsyslogが付けてくれます。

<プロセス終了時>

process /root/a.out (pid XXXX) exited. Scheduling for restart.

<プロセス再起動時>

Starting pid XXXX, console : '/root/a.out'

moto

2014年8月8日 8時25分

佐々木 様

田中です。

ありがとうございます。
昨日、設定をしてみたところ無事に動作いたしました。
respawnのランレベルなどの設定をどのようにすればよいかなど気になっていたところがありましたが、
特に記載せずとも動作することを確認できました。

> > また、設定した内容は基本的に「&」をつけてバックグラウンドで実行されているものと同じになると考えてよろしいでしょうか?
>
> ご質問の意図は、「respawnで起動するプロセスをデーモンプロセスにしたい」という事で正しいですか?

はい、起動時にコンソールの端末などを占有しないようにしたいと考えておりました。
いくつか、試した見たところ、こちらにつきましては起動スクリプトのプログラムの起動の最後に「&」なしで記載しても思った通りの動きを致しました。
「&」をつけて起動すると、respawnに記載しているスクリプトが、終了してしまい再度起動しようとしたため、
スクリプトで起動する場合は、「&」なしでの記述で良いということが分かりました。

ありがとうございました。