我最不希望遇到麻烦。
我有一个需要每分钟运行一次的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日志: 7月18日22:23:01 ip-10-251-25-8 CRON [2923] :( ubuntu)CMD(sh /var/SmartGlass/sg2-nfl/trunk/build/batch_jshint.sh) 7月18日22:23:01 ip-10-251-25-8 CRON [2924] :( ubuntu)CMD(sh /var/SmartGlass/sg2-nfl/trunk/build/test.sh) 7月18日22:23:01 ip-10-251-25-8 CRON [2925] :( ubuntu)CMD(/ usr / bin / uptime> / tmp / uptime) 7月18日22:23:01 ip-10-251-25-8 CRON [2922] :( CRON)info(未安装MTA,丢弃输出) 7月18日22:24:01 ip-10-251-25-8 CRON [2932] :( ubuntu)CMD(sh /var/SmartGlass/sg2-nfl/trunk/build/batch_jshint.sh) 7月18日22:24:01 ip-10-251-25-8 CRON [2933] :( ubuntu)CMD(sh /var/SmartGlass/sg2-nfl/trunk/build/test.sh) 7月18日22:24:01 ip-10-251-25-8 CRON [2934] :( ubuntu)CMD(/ usr / bin / uptime> / tmp / uptime) 7月18日22:24:01 ip-10-251-25-8 CRON [2931] :( CRON)info(未安装MTA,丢弃输出)
任何建议都会被感激,因为我现在很难过。
答案 0 :(得分:2)
当然,我没有检查过的一件事。我必须在批处理文件中包含节点和grunt可执行文件的路径。尽管我在登录时不必这样做,但它是运行cron作业的同一用户。