关于perl:Schedule :: Cron永远不会返回主脚本

Schedule::Cron never returns to main script

我试图每1分钟inteval运行Perl脚本(test.pl)而不使用crontab。 我无权访问/etc/cron.d/中写入cron作业,所以我已经开始使用Perl模块Schedule :: Cron。

我已将test.pl的代码包含在一个连续运行的脚本中,并给出如下代码:

1
2
3
my $cron = new Schedule::Cron(sub {});
$cron->add_entry("* * * * *",\&test_function);
$cron->run(nofork=>1)

问题是,

$cron->run(nofork=>1)

永远不会返回主脚本,也不会执行之后给出的任何代码。

我需要一个解决方案,在后端运行cron(使用Schedule :: Cron),然后返回主脚本执行剩余的脚本。

请帮忙


更改:

1
$cron->run(nofork=>1)

至:

1
$cron->run(detach=>1)

这会立即返回主脚本。 来自Schedule :: Cron(detach):

If set to a true value the scheduler process is detached from the
current process (UNIX only).


您需要fork一个后台(守护进程)进程。 你用nofork => 1来阻止它。