2013-07-18 45 views
0

我期望遇到的最后一件事情。通过cron运行Grunt和Node作为批处理文件

我有一个需要每分钟运行的grunt文件。它运行JSHint,捕获输出,并通过Amazon SES发送电子邮件。它在命令行上运行时工作正常。但是,它通过cron运行时只会失败。什么都没发生。我打破了发送到单独节点文件的电子邮件。它不会自行运行。我从第二个文件中取出了所有文件的读取内容,并试图单独运行它,只是发送一个硬编码值的电子邮件。没有骰子。再次,从命令行运行时运行良好。

我可以在cron日志中看到它们正在运行的条目。我打开了所有受影响文件和目录的访问权限,任何人都可以执行。我已经硬编码了所有的目录路径,以确保它没有通过找不到文件而无声地失败。

这里的cron项: */1 * * * * SH /var/test/trunk/build/batch_jshint.sh

这里的shell脚本:

#!/bin/bash 
export PATH=$PATH:/opt/node/bin 
cd /var/test/trunk/build/ 
grunt jshint_check --gruntfile /var/test/trunk/build/Grunt_jshint.js 
node /var/test/trunk/build/send_jshint_email.js 

的Cron日志: Jul 18 22:23:01 ip-10-251-25-8 CRON [2923]:(ubuntu)CMD(sh /var/SmartGlass/sg2-nfl/trunk/build/batch_jshint.sh) Jul 18 22:23 :01 ip-10-251-25-8 CRON [2924]:(ubuntu)CMD(sh /var/SmartGlass/sg2-nfl/trunk/build/test.sh) Jul 18 22:23:01 ip-10 -251-25-8 CRON [2925] :(ubuntu)CMD(/ usr/bin/uptime>/tmp/(CRON)信息(未安装MTA,丢弃输出) Jul 18 22:24:01 ip-10-251- 25-8 CRON [2932]:(ubuntu)CMD(sh /var/SmartGlass/sg2-nfl/trunk/build/batch_jshint.sh) Jul 18 22:24:01 ip-10-251-25-8 CRON [ 2933]:(ubuntu)CMD(sh /var/SmartGlass/sg2-nfl/trunk/build/test.sh) Jul 18 22:24:01 ip-10-251-25-8 CRON [2934] :(ubuntu )CMD(/ usr/bin/uptime>/tmp/uptime) Jul 18 22:24:01 ip-10-251-25-8 CRON [2931] :(CRON)info(未安装MTA,丢弃输出)

任何建议都会被感激地接受,因为我现在非常难过。

回答

2

当然,我没有检查的一件事。我必须在批处理文件中包含节点路径和grunt可执行文件。尽管在登录时我不必这样做,并且它是运行cron作业的同一用户。

+0

你能澄清你到底做了什么吗?因为我不清楚在我的bash脚本中添加到我的$ PATH中。 – Jelmer

+1

这是通往grunt或node可执行文件的路径。所以,我有grunt jshint_check --gruntfile /var/test/trunk/build/Grunt_jshint.js。我不能只是'咕噜'。它必须是/ var/lib/bin/grunt。因此,无论在哪里,您的服务器上都存在难以解决的问题,咕噜声或节点。 – CargoMeister

+0

感谢您回来!欣赏它:)我在昨天晚些时候发现了它,实际上我不得不在我的路径中添加'/ usr/local/bin'。那解决了它。我认为这是一个奇怪的行为,用户的crontab没有包含'/ usr/local/bin'路径,但无论如何。它现在工作:) – Jelmer

相关问题