2011-11-23 163 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

是的,我见过你把在我评论之后逃跑的时候,除非你是电脑,否则在你读之前可能会开始这样做:) –