Shammer's Philosophy

My private adversaria

自作の/etc/init.d/XXXで起動したらbackgroundで動作しない

自動起動スクリプトの作成 - Shammerismで作成した UDP サーバーを、/etc/init.d/ 配下に作成したその UDP サーバ用の起動スクリプトで start するとフォアグラウンドで動作する。/etc/init.d/skeleton の start−stop−daemon が --background オプションがないためだ。本来は、起動するプログラム内で自らを fork するように書いておくというのが正しいやり方のようだが、Lisp で書いたプログラムをコンパイルしたものなのでそんなことはしていないが、作成した起動スクリプトの do_start 内にある start−stop−daemon に --background オプションを付けることでこの問題を解決できる。do_start は以下のようになる。

do_start()
{
	# Return
	#   0 if daemon has been started
	#   1 if daemon was already running
	#   2 if daemon could not be started
	start-stop-daemon --start --quiet --background --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
		|| return 1
	start-stop-daemon --start --quiet --background --pidfile $PIDFILE --exec $DAEMON -- \
		$DAEMON_ARGS \
		|| return 2
}