node.js - 从 crontab 运行全局 Node 模块二进制文件

标签 node.js bash cron node-modules

我正在尝试从我的 crontab 中运行 Node 模块 (npm install -g lungo-cli)。

我尝试的是从 crontab 调用 Node 二进制文件:

* * * * * lungo

运气不好。

然后我尝试了:

* * * * * /usr/local/bin/lungo

再次,没有运气。

最后我做了我认为的解决方法,使用 shelljs 直接从 javascript 文件调用 Node 模块。

Javascript:

const shell = require('shelljs')
shell.exec('lungo')

我什至尝试在本地运行它!

const lungo = require('lungo-cli/bin/lungo')
const shell = require('shelljs')

const shell.exec('lungo')

定时任务:

* * * * * /usr/local/bin/node $HOME/scripts/lungo.js

而且是一样的,它不起作用,似乎 crontab 运行在与我的 zsh shell 完全不同的环境中,并且找不到除OSX 特定的,例如 catrmcd 等。

我使用 Mac OSX 10.14.1 (Mojave) 和 zsh 作为 shell。

我怎样才能做到这一点?我希望能够使用 crontab 调用我的 Node cli 程序。

最佳答案

我在 macbook 中使用 Oh-my-zsh,因此我尝试了很多方法来运行 crontab 任务,但最后,我的解决方案是在运行命令之前添加 .zshrc。

*/30 * * * * . $HOME/.zshrc; node  /path/for/my_script.js

此任务每 30 分钟运行一次,并使用 .zshrc 配置文件来执行我的 Node 命令。不要忘记在 $HOME 变量之前使用点。

顺便说一句,您可以运行附加到 zsh 环境的任何命令。

关于node.js - 从 crontab 运行全局 Node 模块二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53243987/

相关文章:

python - 从 python 脚本获取当前 shell 类型

linux - 如何在 crontab 中添加条目以使用特定用户运行脚本?

node.js - ID 的序列号

javascript - Chrome 扩展程序 : Uncaught SyntaxError: Unexpected token return

regex - Sed 在特定模式后替换

javascript - Cron-job - 在日期前 [x] 天/小时发送电子邮件 - 用户可以选择 [x]

bash - 为什么我不能在 crontab 中使用大括号?

javascript - wait 仅在异步函数和模块的顶级主体中有效,因为它在顶级主体中

json - 如何在 Node.js Bunyan Logging 中添加自定义 JSON 对象?

linux - Bash 比较目录中的字符串