无法让 cronjob 运行 node.js 文件
Posted
技术标签:
【中文标题】无法让 cronjob 运行 node.js 文件【英文标题】:Cant make cronjob run node.js file 【发布时间】:2022-01-01 06:31:04 【问题描述】:我很犹豫要不要在这里发帖,因为这个问题已经被大量弹出,但我已经尝试了过去 2 天在互联网上找到的几乎所有内容。我在使用 Linux 的第一周,这是一次疯狂的旅程。 (Ubuntu 20.04 LTS)
所以我制作了打开浏览器的节点应用程序 -> 登录到我们公司的 web 应用程序并自动记下我的工作时间,我想在计算机重新启动时运行它,因为我在回家时标记了我的时间。这样我就不会忘记标记它们。 (注意:我也尝试过每分钟或下一分钟运行它,以确保它与@reboot 命令无关)
这些是我尝试过的一些不同选项。自从我一直在尝试以来,我真的无法记住所有内容,我相信现在有 100 多种不同的变体。同样在下面的代码中,我也尝试过使用完整路径或只是 ex。 bin/node 等
@reboot cd /home/sepi/Documents/MyProjects/eas_app && /usr/local/bin/node index.js
@reboot usr/local/bin/node /home/sepi/Documents/MyProjects/eas_app/index.js
@reboot /bin/node /home/sepi/Documents/MyProjects/eas_app/index.js
哪个节点给出:/usr/local/bin/node
【问题讨论】:
您是否尝试过从脚本中记录日志以查看它是否启动?你有两个不同的node
安装(/usr/local/bin/node
和/bin/node
)吗?
【参考方案1】:
首先检查你的节点二进制文件在哪里
$ whereis node
并且仅在 cronjob 中使用该路径。
要解决任何 cronjob,您需要做的第一件事是在日志文件中重定向 stdout 和 stderr。
@reboot /bin/node /home/sepi/Documents/MyProjects/eas_app/index.js > out.log 2>&1
这样你就会明白是否有任何库或路径问题。
如果您仍然遇到问题,那么只需在您的 crontab 中添加以下行
SHELL=/bin/bash
BASH_ENV="/home/user/.bashrc"
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
在 BASH_ENV 中而不是用户添加您的用户名,请通过 whoami
检查
注意:可以通过echo $SHELL
和echo $PATH
找到 SHELL 和 PATH 条目
分别。
还首先添加时基 cron 以测试它是否正常工作,然后添加 cronjob 以用于重启场景。
【讨论】:
以上是关于无法让 cronjob 运行 node.js 文件的主要内容,如果未能解决你的问题,请参考以下文章
当代码在其他文件中时如何运行 Cron 作业 - Node JS