【发布时间】:2021-06-23 06:21:23
【问题描述】:
我在 root 用户的 crontab 中列出了一个 cron 作业:
*/5 * * * * /usr/local/bin/service_monitor.sh
文件内容如下:
#!/usr/bin/bash -e
/usr/bin/systemctl is-active --quiet nginx && aws cloudwatch put-metric-data --metric-name hearbeat-nginx --namespace heartbeat --value 1 --region eu-west-1
/usr/bin/systemctl is-active --quiet prosody && aws cloudwatch put-metric-data --metric-name heartbeat-prosody --namespace hearbeat --value 1 --region eu-west-1
该文件是可执行的,当我直接以 root 身份运行它时,它运行时没有问题,并且我在 AWS CloudWatch 中记录了指标,因此我知道 AWS cli 或权限没有问题。但是,当我尝试将其作为 cron 作业运行时,我看不到任何创建的指标。我可以在系统日志中看到该文件正在由 cron 执行。有什么想法吗?
【问题讨论】:
-
root 的
.profile或.bashrc是否设置了aws命令所需的任何环境变量?这些脚本不是cron运行的,所以环境设置不正确。 -
如果脚本产生任何错误,它们将被发送到 root 的电子邮件。你检查了吗?
标签: bash cron amazon-cloudwatch