Bash 脚本未使用 cronjob 运行

Bash 脚本未使用 cronjob 运行

以下是我的 cronjob

* * * * * metrics.sh 5953c0685932c30ccbf7d916 5953c0e35932c30ccbf7d917

这是我的 metrics.sh

d_t=$(df | grep "/$" | awk '{print $2;}')
d_u=$(df | grep "/$" | awk '{print $3;}')
m_t=$(free | grep Mem | awk '{print $2;}')
m_u=$(free | grep Mem | awk '{print $3;}')
curl -H "Content-Type: application/json" -X POST -d '{"d_t":'$d_t',"d_u":'$d_u',"m_t":'$m_t',"m_u":'$m_u'}' https://localhost:3000/server/metrics/$1/$2

答案1

作为解决问题的第一步,metrics.sh 必须可以从 CLI 执行。常见的失败原因是脚本不可执行或脚本中的编码错误。

ls -l metrics.sh

应该为正确的所有者、组或世界设置 x 标志。

./metrics.sh

应该无错误运行或将提供指示编码或权限问题的错误消息。

当使用完全限定的指令并且不假设所有变量都将传递给 cron 时,Cron 作业运行得更可靠。例如:

* * * * * $HOME/metrics.sh

或者

* * * * * /home/user/scripts/metrics.sh

您的脚本非常优雅,我没有发现任何明显的编程错误。但是,请注意,bash 脚本的第一行应该如下:

#!/bin/bash

相关内容