在没有 CronTab 的情况下运行 Perl 脚本 1 分钟间隔
Posted
技术标签:
【中文标题】在没有 CronTab 的情况下运行 Perl 脚本 1 分钟间隔【英文标题】:Run Perl script 1 minute interval without CronTab 【发布时间】:2013-09-30 15:15:57 【问题描述】:我的 Perl 脚本(test.pl)现在在 crontab 中运行为
* * * * * perl test.pl >/dev/null 2>&1
我希望在不使用 crontab 的情况下每隔 1 分钟运行一次我的脚本。我将无权将 cron 作业写入 /etc/cron.d/,因此需要找到另一个解决方案
有什么办法吗?
【问题讨论】:
while :; do perl test.pl >/dev/null 2>&1; sleep 60s; done
?
您能解释一下您希望避免的关于cron
的内容吗?通常,按计划运行某事需要一个调度系统在运行的事物之外。所以 devnull 的建议是一个长时间运行的 shell 脚本,您可以以交互方式停止和启动。我无法从您的问题中判断这是否足够 - 也许您希望脚本每分钟一次运行几个小时,并且希望避免编辑 crontab 以打开和关闭它?
@Neil Slater - 将无权将 cron 作业写入 /etc/cron.d/,因此需要寻找另一个解决方案
【参考方案1】:
Schedule::Cron 是 CPAN 上的一个模块,它提供了运行周期性任务的强大能力。
use Schedule::Cron;
my $cron = new Schedule::Cron(sub );
sub run_task
# do something...
$cron->add_entry("0 11 * * Mon-Fri",\&run_task);
$cron->run();
强烈推荐,因为:
触发任务的时间间隔是自定义且灵活的,与*nix系统中的crontab
几乎相同。因此,当您有新需求时,您可以轻松快速地更改脚本;
它允许定期运行脚本中的单个函数,而不是定期运行整个脚本,因此再次灵活;
【讨论】:
【参考方案2】:尝试一个守护进程。将您的代码置于无限循环中,并在每次迭代之间休眠 60 秒。我猜。
【讨论】:
以上是关于在没有 CronTab 的情况下运行 Perl 脚本 1 分钟间隔的主要内容,如果未能解决你的问题,请参考以下文章