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 {
:終了処理
}