gpt4 book ai didi

svn |哇 |邮件在 bash 中有效,但在 cron 作业中无效

转载 作者:行者123 更新时间:2023-12-04 21:38:52 28 4
gpt4 key购买 nike

我有以下命令来显示对 subversion 存储库的更改

svn log -v -r{$(date +%Y-%m-%d)}:HEAD http://therepository | awk '/^r[0-9]+ / {user=$3} {if (user=="username") {print $1 $2 $3}}' | mail -ne -s'Users SVN commits' email@email.com

它在命令行中运行良好。

当我将它粘贴到 crontab 时,我收到以下错误消息:

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

这需要如何引用才能工作?

最佳答案

使用 cron 时,通过将所有内容放入 shell 脚本,然后从 cron 调用 shell 脚本来避免此类问题的麻烦。

这种方法很常用,也是一个好主意,因为:

  • 它使您的命令易于测试(您不必做愚蠢的事情,例如安排在一分钟内执行)
  • 如果必须,可以轻松手动调用,例如,如果作业失败,ops 可以在不触及 crontab 的情况下重新运行 - 作业也可以从其他作业调用,例如检查所有作业是否运行正常并重新运行的最终作业-运行那些没有运行的
  • 它将执行的什么与执行的时间分开-让cron(只)做它最擅长的事情:调度
  • 它使您可以完全访问 shell 脚本功能,或使用不同的 shell,如 perl
  • 它使 crontab 保持干净且易于阅读
  • 如果您为 cron 任务使用一致的目录(例如/opt/cron 或其他),任何开发/维护 cron 任务的人都知道去哪里查找
  • 您可以将 cron 任务置于源代码控制之下 - shell 脚本经常被源代码控制所忽视,但它们是代码,因此受益于源代码控制

例如:

dosomething.sh:

svn log -v -r{$(date +%Y-%m-%d)}:HEAD http://therepository | awk '/^r[0-9]+ / {user=$3} {if (user=="username") {print $1 $2 $3}}' | mail -ne -s'Users SVN commits' email@email.com

加上

cron 0 22 * * * /opt/cron/dosomething.sh

关于svn |哇 |邮件在 bash 中有效,但在 cron 作业中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7059677/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com