我有一个NodeJS脚本,该脚本会根据时间删除旧记录,当脚本运行时,它将从日期x到日期y的所有记录删除,如果我将再次以正确的方式重新运行此脚本,它将说:“找不到要删除的记录”等。
该脚本公开为NPM脚本,以方便使用,它在我的package.json中定义如下:
{
...
"scripts": {
"deleteOldRecords": "cd server && cross-env NODE_ENV=prod node scripts/deleteOldRecords.js"
}
...
}
我希望NPM每3分钟运行一次,所以我在crontab
中定义了它,如下所示:
*/3 * * * * cd /my/project && npm run deleteOldRecords > /dev/null 2>&1
现在,我正在检查/var/log/syslog
,并且确实看到一条输出,指示作业运行正常:
Jun 4 20:39:01 localhost CRON[19497]: (node-user) CMD (cd /my/project && npm run deleteOldRecords > /dev/null 2>&1)
问题是它不能执行真正的操作,当我再次从控制台手动运行它时:
node-user@ip-0-0-0-0:/$ cd /my/project && npm run deleteOldRecords > /dev/null 2>&1
它正在查找要删除的记录并成功删除它们,这应该是这样的,因为运行crontab应该删除它们,并且手动运行应该说“我找不到要删除的记录”。
知道为什么会发生吗?