目前我正在寻找daemonize perl脚本.可悲的是,大多数答案都已过时,我实际上完全不明白如何开始守护进程(特别是守护进程perl脚本).
现在我正在看Proc Proc Daemon,但我不知道从哪里开始,或者是否应该在使用或不使用模块的情况下完成.
我相信,如果我举一个例子来说明我想要提出这个问题的方向.
例
说我在osx上,我想写一个可以作为守护进程运行的perl脚本.它响应信号HUP,然后该信号继续从某个目录中的文件打印内容.如果它接收到信号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;
}
Run Code Online (Sandbox Code Playgroud)