Ste*_*eve 50 cron crontab node.js
很简单,我有一个节点脚本,我想每个月执行一次.
30 6 1 * * node /home/steve/example/script.js
Run Code Online (Sandbox Code Playgroud)
但这不起作用,大概是因为命令正在运行的路径或shell.我尝试了以下通过cron执行节点的方法(使用-v测试):
steve@atom:~$ node -v
v0.4.2
steve@atom:~$ sh node -v
sh: Can't open node
steve@atom:~$ bash node -v
/usr/local/bin/node: /usr/local/bin/node: cannot execute binary file
steve@atom:~$ /usr/local/bin/node -v
v0.4.2
steve@atom:~$ sh /usr/local/bin/node -v
/usr/local/bin/node: 1: Syntax error: "(" unexpected
steve@atom:~$ bash /usr/local/bin/node -v
/usr/local/bin/node: /usr/local/bin/node: cannot execute binary file
Run Code Online (Sandbox Code Playgroud)
我已经没有想法尝试,任何建议?
Dan*_* D. 91
只需提供/usr/local/bin/nodecron作业中节点的完整路径,如:
30 6 1 * * /usr/local/bin/node /home/steve/example/script.js
Run Code Online (Sandbox Code Playgroud)
Mau*_*ord 26
另外,只需将#!/usr/local/bin/node脚本放在要执行的脚本的顶部即可.然后它会自动知道用节点执行脚本.确保该文件也是可执行的.
您还可以在用户 crontab 之上指定二进制文件的路径,例如:
PATH=/bin:/usr/bin:/usr/local/bin
* * * * * cd your/path && node foo.js
* * * * * cd your/path && npm run bar
Run Code Online (Sandbox Code Playgroud)
小智 6
这也适用于用户级 cron 作业
*/2 * * * * cd /home/destination/path && $(which node) index.js
Run Code Online (Sandbox Code Playgroud)
小智 5
这些答案在这里说使用绝对路径都会对运行较大的节点应用程序造成重大问题!
真正的完整解决方案
编辑Cron工作
crontab -e
Run Code Online (Sandbox Code Playgroud)
查找节点路径
which node
Run Code Online (Sandbox Code Playgroud)
将CD放入目标文件夹,然后根据节点路径更改Cron Job并运行脚本
*/2 * * * * cd /home/destination/path && /bin/node index.js
Run Code Online (Sandbox Code Playgroud)
然后,这将允许您运行完整的NodeJS应用程序,而不会出现所有错误,例如如何为index.js文件使用绝对路径。
| 归档时间: |
|
| 查看次数: |
56982 次 |
| 最近记录: |