书写 cron 定时同步脚本时,时间参数设置出现了错误:
* * 17 * * *
# except:
# 0 0 17 * * *
# or:
# 0 17 * * *
由于第一位(秒钟)与第二位(分钟)设置为了 *。导致 crontab 在 17 点时每过一秒执行一次任务。刚好同步脚本用到向 telegram 发送信息,于是出现了对 telegram 的小 d。在我还没意识到发生什么的 51 分钟里,telegram channel 已经出现了 1k+ 条消息(由于本地程序执行也需要时间,所以实际上不可能一秒执行一次)。
换作其他平台(比如莫名其妙把我的开发者号封了的 twitter),这个 bot 肯定是废了。但是 telegram 仍然正常运行。
也许这次没有触碰到 telegram 的上限?毕竟换算下来频率大概 3s 请求一次。
不过不管怎样,也提醒了我 cron 时间设置一定要检查好。毕竟 cron 执行本身是无声的,很有可能出现错误配置却没有发现的情况。
找了找,果然发现了 cron 可视化网站(crontab.guru)。它支持将书写好的时间转化为人类可读的格式,从而帮助你发现错误。
举例来说,将我的错误时间放上去,会提示:
# * 17 * * *
At every minute past hour 17.
这样一下就知道出错了。