提问人:centershocks 提问时间:5/11/2022 更新时间:5/11/2022 访问量:762
为什么 cron 无法正确执行我的 node.js 脚本?
Why is cron not executing my node.js script properly?
问:
我正在尝试从 cron 运行 node.js 脚本。它应该读取一个 .json-File,进行 API 调用,然后将响应写入 .json-File。
手动执行时,一切正常。
这完成了它的工作
sudo node ~/bots/gtaa/index.js
sudo crontab -e
29 9 * * 1-5 /usr/bin/node ~/bots/gtaa/index.js >> ~/gtaa-bot.log 2>&1
grep cron /var/log/syslog
May 11 09:29:01 raspberrypi CRON[54381]: (root) CMD (/usr/bin/node ~/bots/gtaa/index.js >> ~/gtaa-bot.log 2>&1)
我的索引 .js 使用本地 .env 文件
require('dotenv').config({ path: __dirname + '/.env' })
主目录中也没有 -File。gtaa-bot.log
这里提出了一个非常相似的问题,但没有提供有用的答案。
答:
0赞
treckstar
5/11/2022
#1
好吧,我最近遇到了这个问题 Ubuntu 20.04.4 LTS
最终发生的事情是 cron 在不同的环境中运行,并且很可能无法找到正确的节点路径。
有一些方法可以配置它,但是我发现一个更简单的解决方案最终是让 cron 执行一个运行 nvm 和/或节点的 bash 脚本。
例如,我设置每 20 分钟运行一次:
20 * * * * /bin/bash/ /home/user/nvm_cron.sh
在我的文件中:nvm_cron.sh
# Load nvm
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm use 16.14.0
# Run node program
cd /home/user/folder && node start.js
不要忘记确保nvm_cron.sh
文件是可执行的
这样我就可以控制要为脚本运行的节点版本,而不必担心弄乱 cron。
评论