2011-11-23 197 views
4

我在我的cron文件中的下列命令:命令從命令行運行,而不是從cron運行?

*/15 * * * * NODE_ENV=production ~/bin/node ~/myapp/app.js > /var/log/nodelog/nodelog_`date "+%Y-%m-%d_%H-%M"`.log 

複製並粘貼到bash shell的時候,但是cron作業持續發送以下錯誤信息的命令本身運行正常:

/bin/sh: -c: line 0: unexpected EOF while looking for matching ``' 
/bin/sh: -c: line 1: syntax error: unexpected end of file 

爲什麼它從命令行運行正常,但在cron作業中失敗?命令行預期的語法和cron預期的語法有什麼不同?

回答

4

從crontab的手冊頁:

百分比-體徵(%)在命令,除非與反斜槓 (\)轉義,將變爲新行字符, 第一%之後的所有數據將是作爲標準輸入發送到該命令。

0

看看cron文件的權限。如果它屬於你,那麼你可以使用〜。否則使用完整路徑..!

1

的crontab是以下原因一般很容易出錯:在crontab中

  1. 格式要求
  2. 權限
  3. 環境

提示

  • 使用腳本,而不是crontab(!)中的內聯命令 - 避免轉義問題
  • 在cron腳本中使用絕對路徑。
  • 測試使用env -i ./myscript.sh
+0

都不是。它在shell解析階段出錯;-) –

+0

@ MichaelKrelin-hacker:忍者編輯 - 鍵入response_閱讀queston_ :)你是對的我的第一個預感並不是這裏的主要問題 – sehe

+0

是的,我見過你把在我評論之後逃跑的時候,除非你是電腦,否則在你讀之前可能會開始這樣做:) –