我试图在不使用crontab的情况下每隔1分钟运行一次Perl脚本(test.pl)。我无权访问/etc/cron.d/中的cron作业,因此我开始使用Perl模块Schedule :: Cron。
我已将test.pl的代码包含在一个连续运行的脚本中,并给出如下代码:
my $cron = new Schedule::Cron(sub {});
$cron->add_entry("* * * * *",\&test_function);
$cron->run(nofork=>1)
问题是,
$ cron->运行(nofork =→1)
永远不会返回主脚本,也不会执行之后给出的任何代码。
我需要一个解决方案,在后端运行cron(使用Schedule :: Cron),然后返回主脚本执行剩余的脚本。
请帮忙
答案 0 :(得分:6)
变化:
$cron->run(nofork=>1)
为:
$cron->run(detach=>1)
这会立即返回主脚本。来自Schedule::Cron(分离):
如果设置为true值,则调度程序进程将从中分离 当前进程(仅限UNIX)。
答案 1 :(得分:0)
您需要派生后台(守护程序)进程。你用nofork => 1
封锁了它。