O script Bash não está sendo executado usando o cronjob

0

O seguinte é meu cronjob

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

E aqui estão minhas métricas.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
    
por Hari Aakash 28.06.2017 / 18:39

1 resposta

3

O metrics.sh deve ser executável a partir de uma CLI como uma primeira etapa para solucionar seu problema. Causas comuns de falhas são o script não sendo executável ou um erro de codificação no script.

ls -l metrics.sh

Deve ter o sinalizador x definido para o proprietário, grupo ou mundo correto.

./metrics.sh

Deve ser executado sem erros ou fornecerá mensagens de erro que indiquem problemas de codificação ou privilégio.

As tarefas Cron são executadas de forma mais confiável ao usar diretivas totalmente qualificadas e não assumem que todas as variáveis serão passadas para o cron. ex:

* * * * * $HOME/metrics.sh

ou

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

Seu script é elegante e não vejo erros de programação óbvios. No entanto, observe que os scripts do bash devem ter a seguinte linha:

#!/bin/bash
    
por jones0610 28.06.2017 / 21:23