Вот мой 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
metrics.sh должен быть исполняемым из CLI в качестве первого шага в устранении вашей проблемы. Распространенными причинами сбоя является то, что скрипт не является исполняемым, или ошибка кодирования в скрипте.
ls -l metrics.sh
Должен быть установлен флаг x для правильного владельца, группы или мира.
./metrics.sh
Должен работать без ошибок или предоставлять сообщения об ошибках, которые указывают на проблемы с кодированием или привилегиями.
Задания Cron выполняются более надежно, когда используются полностью определенные директивы и не предполагается, что все переменные будут переданы в Cron. Например:
* * * * * $HOME/metrics.sh
или
* * * * * /home/user/scripts/metrics.sh
Ваш сценарий элегантен, и я не вижу очевидных ошибок программирования. Однако обратите внимание, что скрипты bash должны иметь следующую первую строку:
#!/bin/bash