守护perl脚本

时间:2015-04-27 03:45:37

标签: perl daemon

目前我正在寻找daemonize perl脚本。可悲的是,大多数答案都已过时,我实际上完全不明白如何开始守护进程(特别是守护进程perl脚本)。

现在我正在看Proc Proc Daemon,但我不知道从哪里开始,或者是否应该在使用或不使用模块的情况下完成。

我相信如果我给出一个我想要的例子来给这个问题多一点方向。

示例

说我在osx上,我想写一个可以作为守护进程运行的perl脚本。它响应信号HUP,然后该信号继续从某个目录中的文件打印内容。如果它接收到信号USR1,则它以不同方式打印出内容。作为守护进程执行此操作的最合适方法是什么?

1 个答案:

答案 0 :(得分:8)

这就是你所需要的:

#!/usr/bin/perl

use strict;
use warnings;

use Daemon::Daemonize qw( daemonize write_pidfile );

sub sighup_handler {
   ...
}

sub sigusr1_handler {
   ...
}

{
   my $name          = "...";
   my $error_log_qfn = "/var/log/$name.log";
   my $pid_file_qfn  = "/var/run/$name.pid";

   daemonize(
      close  => 'std',
      stderr => $error_log_qfn,
   );

   $SIG{HUP}  = \&sighup_handler;
   $SIG{USR1} = \&sigusr1_handler;

   write_pidfile($pid_file_qfn);

   sleep while 1;
}