我需要每小时或每30分钟运行几个脚本,我还需要控制它们(重启,停止和启动).我目前正在使用cron.js,但是如果我使用本机setInterval会有任何性能差异吗?而不是使用cron.js?另外,我能控制它们吗?
解决方法
我强烈建议使用您的操作系统的本机crontab(1)程序.我曾经沉浸在cron.js的简单性中,只是为了很快意识到它在生产中不是很可靠.
is there any performance difference if I use the native setInterval?
确实是的.由于Javascript运行时的性质,setInterval()不准确,最终会与操作系统的时钟不同步. cron.js使用了setInterval(),但是,他们添加了一个心跳监视器来调整间隔和使用Date对象找到的cpu时钟之间的增量.如果脚本运行的准确性至关重要,那么这两种方法都不应该被认为是可靠的.
此外,使用cron.js会使您的定时脚本依赖于该过程.当然,你可以永久地使用它来无限期地保持进程,但是如果它在执行作业之前几秒钟发生崩溃,那么脚本很可能不会像永远重启一样运行.更不用说,如果机器重新启动,永远的进程将会死亡,除非计划在使用upstart(1)启动时重新启动,或者具有讽刺意味的是,crontab(1).
摘要:
crontab(1)是企业软件依赖数十年的战斗测试程序.重新发明车轮没有意义=)
如果你在每个脚本的顶部追加一个SheBang,如下所示:
#! /usr/bin/env node