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
0
задан 28 June 2017 в 19:39

1 ответ

metrics.sh должен быть исполняемым из CLI в качестве первого шага в устранении вашей проблемы. Распространенными причинами сбоя является то, что скрипт не является исполняемым, или ошибка кодирования в скрипте.

ls -l metrics.sh

Должен быть установлен флаг x для правильного владельца, группы или мира.

./metrics.sh

Должен работать без ошибок или предоставлять сообщения об ошибках, которые указывают на проблемы с кодированием или привилегиями.

Задания Cron выполняются более надежно, когда используются полностью определенные директивы и не предполагается, что все переменные будут переданы в Cron. Например:

* * * * * $HOME/metrics.sh

или

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

Ваш сценарий элегантен, и я не вижу очевидных ошибок программирования. Однако обратите внимание, что скрипты bash должны иметь следующую первую строку:

#!/bin/bash
0
ответ дан 28 June 2017 в 19:39

Другие вопросы по тегам:

Похожие вопросы: