守护一个 perl 脚本

Daemonize a perl script

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

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

我相信,如果我给出一个我正在寻找的例子,可以给这个问题更多的方向。

例子

假设我在 osx 并且我想编写一个可以 运行 作为守护程序的 perl 脚本。它响应信号 HUP,然后继续打印来自某个 directory.If 的文件的内容,它收到信号 USR1,它以不同的方式打印出内容。作为守护进程执行此操作的最合适方法是什么?

这就是您所需要的:

#!/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;
}