node.js - 将 NPM 脚本作为 crontab (Ubuntu) 运行不起作用
问题描述
我有一个 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 应该删除它们,而手动运行应该说“没有找到要删除的记录”。
知道为什么会这样吗?
解决方案
推荐阅读
- java - 在二叉树中插入字符串
- windows - 通过 ssh 向 Windows 服务器传递命令
- wordpress - wordpress 上的图片、链接和按钮不起作用
- file - 如何在 Prolog 中保存和加载数据文件?
- python - 从 Django 中的 views.py 和模板重定向到管理面板(超级用户)登录页面
- c# - 如何绕过 DLL 服务?
- r - 使用 R 进行篮球参考刮擦
- python - 无法将输入数组从形状 (512,512,100) 广播到形状 (512,512)
- angular - 离子角度自动填充返回上一页
- github - 部署 Heroku 应用程序时如何从 GitHub 提取多个私有存储库?