在 CentOS 系统中为 Node.js 应用配置定时任务,有多种常用方式,其中最主流的两套方案分别是 systemd 和 cron。下面将一步步介绍具体操作步骤。

方法一:使用 systemd
第一步,创建一份新的 systemd 服务配置文件:
sudo vi /etc/systemd/system/my-nodejs-app.service
第二步,在打开的文件中写入以下内容(请根据实际路径进行调整):
[Unit]
Description=My Node.js App
[Service]
ExecStart=/usr/bin/node /path/to/your/app.js
Restart=always
User=
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
这里有几个关键配置项需要注意:/usr/bin/node 是 Node.js 可执行文件的绝对路径(不确定可用 which node 命令查询);/path/to/your/app.js 替换为你的应用入口文件路径; 填入实际运行服务的用户名。
第三步,保存并退出文件。
第四步,重新加载 systemd 配置,使新服务文件生效:
sudo systemctl daemon-reload
第五步,启动服务:
sudo systemctl start my-nodejs-app
第六步,设置开机自启动,确保服务器重启后任务自动运行:
sudo systemctl enable my-nodejs-app
第七步,查看服务运行状态,确认一切正常:
sudo systemctl status my-nodejs-app
方法二:使用 cron
如果你偏好更传统的定时任务方案,cron 同样能高效实现。
第一步,编辑当前用户的 crontab 配置文件:
crontab -e
第二步,在文件中添加一行执行计划。例如,每天凌晨 1 点运行你的 Node.js 应用:
0 1 * * * /usr/bin/node /path/to/your/app.js >> /path/to/your/logfile.log 2>&1
解释一下:前五个字段代表时间表达式(依次为分钟、小时、日、月、周),后面跟要执行的命令。这里将标准输出和错误输出都重定向到日志文件,便于后续排查问题。
第三步,保存并退出。
至此,你的 Node.js 定时任务就配置完成了。如何选择两种方案?主要取决于使用场景——systemd 更适合需要长期持续运行的守护服务,而 cron 则更灵活,适合按指定时间周期唤醒执行的任务。根据实际需求选择最合适的方案即可。
