2013-07-18 76 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

相關問題