You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Node.js Cron任务在系统关机后仍自动每小时运行?

Node.js 定时任务实现开机自启+每小时执行方案

方案1:系统原生定时任务(最稳定可靠)

Linux/macOS 环境

  1. 编写执行脚本
    创建一个run-cron.sh文件,填入以下内容(替换成你的Node实际路径和脚本路径):
#!/bin/bash
/usr/bin/node /home/your-user/scripts/your-cron-task.js >> /home/your-user/logs/cron-task.log 2>&1

给脚本添加执行权限:

chmod +x run-cron.sh
  1. 配置系统Cron
    打开crontab编辑器:
crontab -e

添加一行定时规则(每小时整点执行):

0 * * * * /home/your-user/scripts/run-cron.sh

保存退出后,确保cron服务开机自启:

# Ubuntu/Debian
systemctl enable cron
# CentOS/RHEL
systemctl enable crond

Windows 环境

  1. 打开「任务计划程序」,点击「创建基本任务」
  2. 填写任务名称,点击下一步;触发器选择「每天」,设置起始时间后,勾选「重复任务间隔」为1小时,持续时间选「无限期」
  3. 操作选择「启动程序」,程序或脚本选择Node.exe的路径(比如C:\Program Files\nodejs\node.exe),添加参数填入你的脚本完整路径(比如C:\Users\YourName\scripts\your-cron-task.js)
  4. 勾选「不管用户是否登录都要运行」,并在「设置」中勾选「如果任务失败,每隔X分钟重试」,最后完成配置。

方案2:正确配置PM2实现自启

如果坚持用PM2,可能是之前没完成开机自启配置:

  1. 确保你的Node定时脚本逻辑正确(以node-cron为例):
const cron = require('node-cron');
// 每小时整点执行
cron.schedule('0 * * * *', () => {
  console.log('执行定时任务');
  // 你的业务逻辑
});
  1. 用PM2启动脚本:
pm2 start your-cron-task.js --name hourly-cron
  1. 保存PM2进程列表(重启后恢复):
pm2 save
  1. 设置PM2开机自启,执行以下命令后按照终端提示运行生成的sudo命令:
pm2 startup
  1. 验证:重启系统后执行pm2 list,检查进程是否正常运行,日志可通过pm2 logs hourly-cron查看。

常见问题排查

  • PM2未生效:检查是否执行了pm2 save和pm2 startup,脚本路径是否为绝对路径,避免相对路径导致找不到文件
  • Cron表达式错误:0 * * * *代表每小时整点,确认你的表达式符合需求
  • 权限问题:确保脚本和日志目录有读写权限,Linux下避免用root用户运行不必要的进程,Windows下给任务计划分配最高权限

内容的提问来源于stack exchange,提问作者Pravin Raja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 20:35:22