微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的 crontab 文件不执行我的节点脚本?

如何解决为什么我的 crontab 文件不执行我的节点脚本?

我在以下路径 /Users/SomeName/Desktop/Personals/auto-stock2/update_contracts.js

中有一个节点脚本

我想在工作日的上午 9:30 至下午 4:00 每 5 分钟执行一次此脚本,这是我的 cronjob:

30-59/5 9     * * 1-5 /usr/local/bin/node /Users/SomeName/Desktop/Personals/auto-stock2/update_contracts.js > /var/log/update_contracts_job.log 2>&1
*/5     10-15 * * 1-5 /usr/local/bin/node /Users/SomeName/Desktop/Personals/auto-stock2/update_contracts.js > /var/log/update_contracts_job.log 2>&1
0       16    * * 1-5 /usr/local/bin/node /Users/SomeName/Desktop/Personals/auto-stock2/update_contracts.js > /var/log/update_contracts_job.log 2>&1

如你所见,我为节点和我的脚本提供了绝对路径;无论出于何种原因,脚本永远不会运行。我一直在检查 update_contracts_job.log 文件以验证这一点。

从我的用户目录运行 crontab -l 会返回 crontab 的内容。我还运行了 sudo crontab -u SomeName -l,它也显示了该文件

通过在本地查看邮件,我获得了一些反馈:

cd /var/mail
cat SomeName

邮件正文说明:/bin/sh: /var/log/update_contracts_job.log: Permission denied

似乎是某种类型的权限问题导致无法写入日志。我已经从我的 cronjob 中删除了写入日志文件 > /var/log/update_contracts_job.log 2>&1 的部分,现在我看到了这个错误

Error: EPERM: operation not permitted,open '/Users/SomeUser/Desktop/Personals/auto-stock2/update_contracts.js'
    at Object.openSync (fs.js:476:3)
    at Object.readFileSync (fs.js:377:35)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1090:18)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Function.executeUserEntryPoint Äas runMainÅ (internal/modules/run_main.js:72:12)
    at internal/main/run_main_module.js:17:47 ä
  errno: -1,syscall: 'open',code: 'EPERM',path: '/Users/SomeUser/Desktop/Personals/auto-stock2/update_contracts.js'
å

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。