我知道您可以通过以下操作在Crontab中运行Node.js脚本:
0 * * * * node /path/to/your/script.js
但是我想使用Crontab运行Node.js应用程序,而不是脚本。我创建了一个Node.js应用程序,以便使用Mocha,Chai和Selenium编写一些自动化测试,我想使用Crontab定期运行它。我将如何去做呢?目前,我是通过在命令行中编写代码来运行我的应用的:
npm run api-pro
其中api-pro是我package.json中的脚本,该脚本调用生产api的一些测试。
请注意,如果我只是尝试使用命令“ npm run api-pro”编写Crontab作业,它将无法识别命令npm(显然我的计算机中确实安装了Node)。
答案 0 :(得分:0)
我想通过使用crontab,您正在Linux机器上运行节点应用程序,那么为什么不编写一个简单的bash脚本呢?
run_test.bash
#!/bin/bash
cd /path/to/your/app && \
npm run api-pro
然后您的crontab应该如下所示:
0 * * * * /path/to/your/bash/script/run_test.bash
当然,您的用户必须可以执行脚本:
$ chmod u+x run_test.bash
答案 1 :(得分:0)
我的猜测是,用户cron
使用的PATH
配置方式与您的用户不同,并且不知道node
或npm
。
您可以尝试使用命令which node
来知道您的节点二进制文件在(/some/path/to/node
)
然后,您可以在crontab中使用绝对路径:
0 * * * * /some/path/to/node /path/to/your/script.js
编辑:
将node
和npm
添加到$PATH
与使用绝对路径之间的区别在于,绝对路径将对一个可执行文件有效,因为Linux不必搜索{{1} }。
像添加用户一样,添加到PATH
将使Linux能够识别PATH
和node
。它们位于同一文件夹中的事实不会对此造成影响。