温馨提示×

linux js如何定时任务

小樊
41
2026-10-18 22:23:21
栏目: 编程语言

在 Linux 上用 JavaScript(Node.js)做定时任务,常见有几种方式,从“系统级”到“代码级”都有。下面按使用场景给你总结。


一、系统级定时任务(推荐、最稳定)

1️⃣ 使用 Linux 自带 crontab

适合:每天 / 每小时 / 固定时间执行

示例:每 5 分钟执行一次 JS 脚本

crontab -e

添加:

*/5 * * * * /usr/bin/node /home/user/task.js >> /home/user/task.log 2>&1

说明:

  • /usr/bin/node:Node 路径(用 which node 查)
  • task.js:你的 JS 文件
  • >> task.log:日志输出

✅ 优点:稳定、开机自启
❌ 缺点:不够灵活(秒级不行)


二、Node.js 内部定时任务(代码级)

2️⃣ 使用 setInterval(最简单)

适合:服务常驻时定时执行

setInterval(() => {
  console.log('定时任务执行', new Date());
}, 60 * 1000); // 每 60 秒

✅ 简单
❌ 不适合精确时间(如每天 3 点)


3️⃣ 使用 node-cron(最常用 ⭐)

适合:类 crontab 的 JS 定时任务

安装

npm install node-cron

示例

const cron = require('node-cron');

cron.schedule('0 3 * * *', () => {
  console.log('每天凌晨 3 点执行');
});

时间格式:

* * * * *
分 时 日 月 周

✅ 灵活、可读性强
❌ 程序不能退出


4️⃣ 使用 node-schedule(更强大)

适合:复杂时间规则

npm install node-schedule
const schedule = require('node-schedule');

schedule.scheduleJob('0 0 3 * * *', () => {
  console.log('每天 3:00 执行');
});

支持:

  • 具体时间
  • 间隔
  • 动态任务

三、常驻进程管理(防止任务停)

如果你用 Node 内部定时任务,建议配合:

PM2(强烈推荐)

npm install -g pm2
pm2 start task.js
pm2 save
pm2 startup

✅ 崩溃自动重启
✅ 开机自启


四、方案选择建议

场景 推荐方式
简单脚本 crontab
Node 服务内定时 node-cron
复杂时间 node-schedule
生产环境 crontab + PM2

五、常见坑

❗ Node 路径问题(crontab 中必须写绝对路径)
❗ 时区问题(Linux / Node 时区不一致)
❗ 任务崩溃导致定时失效(用 PM2)


如果你愿意,可以告诉我:

  • 是否已有 Node 服务?
  • 想多久执行一次?
  • 是脚本还是 Web 项目?

我可以直接帮你写完整示例。

0 踩