运行 cronjob 每 5 分钟一次,但在第一次执行后停止?

Running cronjob every 5 minutes but stopped after first execution?

我有 python 脚本来检查服务器是启动还是关闭,如果服务器关闭,它会发送一封电子邮件以及一些系统日志。

我想要的是每 5 分钟检查一次服务器,所以我把 cronjob 如下: */5 * * * * /python/uptime.sh

因此,每当服务器出现故障时,它都会发送一封电子邮件。但我希望脚本在第一个之后停止执行(发送更多电子邮件)。

谁能帮我解决这个问题? 谢谢。

简单的解决方案是,您可以设置一些 Bash 环境变量 MONITORING=true 并让您的 python 脚本使用 os.environ["MONITORING"] 检查该变量。如果该变量是 true 则检查服务器是启动还是关闭,否则不检查任何内容。发现服务器宕机后,从 os.environ["MONITORING"] = false 等脚本中将该变量设置为 false。因此,在您再次设置该环境变量之前,它不会发送电子邮件 true.

  • 写一个空的 While True 脚本,运行 永远存在(例如:"mailtrigger.py")
  • 运行 它与 shell 中的 -nohup mailtrigger.py 无限循环
  • 一旦服务器关闭,检查 mailtrigger.py 是否为 运行ning,如果它 不然后终止 mailtrigger.py (kill process id)

您的下一次迭代不会发送邮件,因为 mailtrigger.py 不是 运行ning。