命令从命令行运行,而不是从 cron 运行?

发布于 2024-12-17 12:04:51 字数 445 浏览 0 评论 0原文

我的 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 中预期的语法之间有区别吗?

I have the following command in my cron file:

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

The command itself runs OK when copied and pasted into the bash shell, but the cron job keeps sending the following error message:

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

Why does it run OK from the command line, but fail in the cron job? Is there a difference between the syntax expected on the command line and that expected in cron?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

浅忆 2024-12-24 12:04:51

来自 crontab 手册页:

命令中的百分号 (%),除非用反斜杠转义
(\),将被转换为换行符,并且后面的所有数据
第一个 % 将作为标准输入发送到命令。

From crontab manpage:

Percent-signs (%) in the command, unless escaped with backslash
(\), will be changed into newline characters, and all data after the
first % will be sent to the command as standard input.

猛虎独行 2024-12-24 12:04:51

由于以下一般原因,Crontab 容易出错:

  1. 中的格式要求
  2. crontab权限
  3. 环境

提示

  • 在 crontab 中使用脚本,而不是内联命令 (!) - 避免转义问题
  • 在 cron 脚本中使用绝对路径。
  • 使用 env -i ./myscript.sh 进行测试

Crontabs are error prone for the following general reasons:

  1. formatting requirements in crontab
  2. permissions
  3. environment

Hints

  • Use scripts, not inline commands in your crontab (!) - avoids escaping issues
  • Use absolute paths in your cron script.
  • Test using env -i ./myscript.sh
巴黎盛开的樱花 2024-12-24 12:04:51

查看 cron 文件的权限。如果它是您拥有的,那么您可以使用〜。否则使用完整路径..!

Look at the cron file permissions. If it is owned by you, then you can use ~. Otherwise use full path..!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文