App::Daemon

デーモンプロセスを生成する。

使用方法

use App::Daemon qw(daemonize);
   :親プロセスの処理
$App::Daemon::pidfile = $pidfile;
$App::Daemon::l4p_conf = $l4pfile;
$App::Daemon::background = 1;
$App::Daemon::as_user = "root";
$App::Daemon::as_group = "root";
daemonize();
   :デーモン化した子プロセスの処理 (親プロセスは自動終了)

下記のコマンドパラメータが自動的に処理される。

-start : デーモン化してプロセスを開始する。既に起動済みの場合はエラー終了する。
-stop : デーモンを停止して終了する。
-status : デーモンの状態を表示して終了する。
 -x : フォアグラウンドでプロセスを開始する。

ログをLog4perlに出力するので、Log4perlのconfigファイルをl4p_confに設定する。デフォルトの動作は、カレントディレクトリにログを吐き出してしまうので、設定必須。変数渡しは不可でので、必ずconfigファイルを作る必要あり。 syslog に出力したい場合は、Log::Dispatch::Syslog 経由で出力できる。

log4perl.logger = INFO, myapp
log4perl.appender.myapp = Log::Dispatch::Syslog
log4perl.appender.myapp.layout = SimpleLayout
log4perl.appender.myapp.facility = local1
log4perl.appender.myapp.ident = myapp

停止時に追加処理を必要な場合は、デーモンプロセス側でシグナルをキャッチして処理する。

$SIG{TERM} = \&sigterm;
$SIG{INT} = \&sigterm;
$SIG{KILL} = \&sigterm;
$SIG{PIPE} = 'IGNORE';
$SIG{HUP} = 'IGNORE';

sub sigterm {
   :終了処理
}