par*_*oid 5 cron debian email error-handling curl
我在 Debian 上有一份 cron 工作:
1 * * * * /home/paradroid/bin/myscript.sh >/dev/null
Run Code Online (Sandbox Code Playgroud)
有安装和配置的MTA,脚本有语法错误时我收到了电子邮件,所以我一直认为出现问题时会通知我。
该脚本curl通过代理下载文件。最近代理失败,curl无法下载。这是脚本中的最后一个命令,它一直以错误代码 7 退出。
我以为发生这种情况时我会收到电子邮件,但我没有。
我怎么会从脚本中的语法错误之类的东西中收到电子邮件警报,但是当脚本无法完成其工作并以错误代码退出时我没有收到它们?
有什么问题吗,或者我是否必须让脚本在出现错误时直接给我发电子邮件curl?
我假设您的 cron 电子邮件设置都是正确的,否则您会收到电子邮件。
您将所有 stdout 发送到/dev/null,因此任何打印错误消息的内容都必须将它们输出到 stderr。您可能希望确保脚本中的所有内容都正确输出。
有时我不得不使用第三方代码,将所有内容发送到标准输出。在这些情况下,我通常会进行错误检查。它并不漂亮,但大多数 shell 脚本也不是。
在与 Freenode 上的一些人交谈后,一位开发人员提到大约十年来(7.23.0 之前)#curl存在一个错误,其中选项解析错误将( ) 视为( ),因此所有输出都被抑制,包括.curl-Ss--show-silent --show-error-s--silentstdout
解决方案(7.23.0 之前)是使用-sS替代或长选项。
这个讨厌的 bug 给我带来了很多困惑,并让一个相当重要的 cron 作业在我不知情的情况下失败了好几天!
| 归档时间: |
|
| 查看次数: |
1591 次 |
| 最近记录: |