强烈推荐专用工具crontab 在线编辑器

lxf2023-03-08 17:21:01

强烈推荐专用工具crontab 在线编辑器

没有一个开发者想要将所有时长都用在了繁琐复杂每日任务上,例如服务器维护及管理、日常数据备份及其按时下载文件和电子邮箱。你更喜欢致力于注重实效工作,而非追踪这种令人讨厌的琐碎什么时候需要完成。【强烈推荐学习培训:《nodejs 教程》】

这个时候就需要用到线程同步,这将帮助你处理这种问题。

线程同步使您可以方案随意编码(方式/函数公式)和指令在固定日期时长、反复间距或特定间距后实行一次。在 Linux 电脑操作系统中,线程同步一般由例如 cron 什么的应用工具服务项目在电脑操作系统等级解决。

在 Node.js 应用软件中,类似 cron 的功效,我们可以使用 node-cron 这种包完成。如同开发人员所推荐的,node-cron 都是基于 GNU crontab 的 node.js 纯 JavaScript 里的小型每日任务调度器。

crontab 是 Linux 全面的计划任务执行机构。cron 的操作由 crontab 文档推动,该文件是一个环境变量,主要包含对 cron 守护程序的指令。node-cron 控制模块容许我们使用完整的 crontab 词法在 Node 中调度任务。

强烈推荐专用工具

crontab 在线编辑器:代码转换器能够数据可视化形成 crontab 的环境变量。

crontab 词法如下所示:

 # ┌────────────── second (可选择)
 # │ ┌──────────── min (minute,0 - 59)
 # │ │ ┌────────── 钟头 (hour,0 - 23)
 # │ │ │ ┌──────── 一个月里的什么时间 (day of month,1 - 31)
 # │ │ │ │ ┌────── 月份 (month,1 - 12)
 # │ │ │ │ │ ┌──── 礼拜中星期几 (day of week,0 - 6) 留意:周末为 0
 # │ │ │ │ │ │
 # │ │ │ │ │ │
 # * * * * * *

许可的 cron 值包含以下几点。

字段名
second0–59
minute0–59
hour0–23
day of the month1–31
month1–12(或月份缩写 Jan、Feb...)
day of the week0–7(或 Jan、Feb...,0 或 7 是礼拜日)

下面我们就来看看它一些使用方法和测试用例。

应用 node-cron

应用 npm 组装 node-cron 控制模块。

$ npm install --save node-cron

线程同步词法

cron.schedule(cronExpression: string, task: Function, options: Object)

选择项

  • scheduled:一个布尔值(boolean),用以设定建立的每日任务是否已经分配(初始值为 true)。
  • timezone:用以线程同步的时区时间。相关幅值,可参考 moment-timezone。

看看下面的事例。

const cron = require('node-cron')

cron.schedule('5 * * * * *', () => {
  console.log('每分于第 5 秒运作一个任务')
})

时长规范化的部位 2、3、4、5 和 6 中的星号(*)类似用以时长区分的文档 glob 或使用通配符;他们各自特定每分一小时每月的每一天每月和每周的每一天

下列编码将于每日零晨 5:30 运作。

const cron = require('node-cron')

cron.schedule('30 5 * * *', () => {
  console.log('每日零晨 5:30 运作每日任务')
})

线程同步提醒与技巧

如今己经了解到了基础知识,使我们做一些更有意思的事。

假定您希望在每周五在下午 4 点运作一项特殊每日任务。编码如下所示:

const cron = require('node-cron')

cron.schedule('0 16 * * friday', () => {
  console.log('每周五在下午 4:00 运作每日任务')
})

或是,您可能必须每个季度运作一次数据备份。crontab 词法并没有一个月的最后一天选择项,因而您可以使用下一个月的第一天,如下所示。

const cron = require('node-cron')

cron.schedule('2 3 1 1,4,7,10 *', () => {
  console.log('在每季度的第一天运作每日任务')
})

下边标注的每日任务在早上 10:05 到晚上 6:05 中间一小时运作五分钟。

const cron = require('node-cron')

cron.schedule('5 10-18 * * *', () => {
  console.log('在早上 10 点至在下午 6 点之间一小时运作五分钟任务')
})

在某些情况下,您可能必须每两个小时、三小时或四小时运作一次每日任务。您可以通过将时数除于所需的时间间距去完成此实际操作,比如,每四小时 *4,或者在早上 12 点至在下午 12 点之间每三小时运作 0-12/3

min还可以用同样的方法区划。比如,minutes 区域的关系式为 */10,表明每10min运作一次每日任务

下边的每日任务在早上 8 点至在下午 5:58 中间每两个小时运作五分钟。

const cron = require('node-cron')

cron.schedule('*/5 8-18/2 * * *', () => {
  console.log('在早上 8 点至在下午 5:58 中间每两个小时运作一次每日任务。')
})

计划任务方式

在结束前,使我们关注一下三个关键的计划任务方式。

开始任务

scheduled 选择项值设为 false 时,每日任务要被生产调度,但无法正常启动,即便 cron 关系式已经滴答作响。

要运行这种每日任务,你需要启用 start 方式。

const cron = require('node-cron')const task = cron.schedule('*/5 8-18/2 * * *', () => {
  console.log('在早上 8 点至在下午 5:58 中间每两个小时运作一次每日任务。')
})

task.start()

停止每日任务

必要时终止每日任务运作,可以用 stop 方式将 scheduled 选择项设为 false。除非是重启,不然不容易实行该每日任务。

const cron = require('node-cron')const task = cron.schedule('*/5 8-18/2 * * *', () => {
  console.log('在早上 8 点至在下午 5:58 中间每两个小时运作一次每日任务。')
})

task.stop()

消毁每日任务

destroy 方式终止每日任务并把它彻底消毁。

const cron = require('node-cron')const task = cron.schedule('*/5 8-18/2 * * *', () => {
  console.log('在早上 8 点至在下午 5:58 中间每两个小时运作一次每日任务。')
})

task.destroy()

以上便是 node-cron 的大多数作用,您应该使用这个作用来制定经常运转的每日任务。

大量程序编写基本知识,请访问:编程视频!!

以上就是关于Node.js中如何运用node-cron来调度任务?的具体内容,大量欢迎关注AdminJS其他类似文章!