无法让 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 $SHELLecho $PATH 找到 SHELL 和 PATH 条目 分别。

还首先添加时基 cron 以测试它是否正常工作,然后添加 cronjob 以用于重启场景。

【讨论】:

以上是关于无法让 cronjob 运行 node.js 文件的主要内容,如果未能解决你的问题,请参考以下文章

node.js 中的 Cronjobs

当代码在其他文件中时如何运行 Cron 作业 - Node JS

每分钟 Cronjob

AWS 无法通过 Cronjob 工作

Cronjob 无法在 Google Compute Engine 上运行

无法让 SSL 在 Node.js 应用程序中工作