A principal diferença entre executar um script na linha de comando e executá-lo no cron é o ambiente. Se você obtiver um comportamento diferente, verifique se esse comportamento pode ser devido a variáveis de ambiente. As tarefas Cron são executadas com apenas algumas variáveis configuradas, e aquelas não necessariamente com o mesmo valor que em uma sessão com login efetuado (em especial, PATH
é geralmente diferente).
Se você deseja que suas variáveis de ambiente sejam definidas, declare-as em ~/.pam_environment
(se o seu sistema suportar) ou adicione . ~/.profile &&
no início da tarefa cron (se as declarar em .profile
). Veja também Qual é o melhor maneira de distro / agnóstico de shell para definir variáveis de ambiente?
Nesse caso, um status 000
da curvatura indica que não foi possível se conectar ao servidor. Normalmente, a conexão de rede é em todo o sistema, então o comportamento da rede é o mesmo no cron. No entanto, uma coisa que é indicada por variáveis de ambiente é qualquer uso de proxy. Se você precisar de um proxy para se conectar à web e tiver definido a variável de ambiente http_proxy
em um script de inicialização de sessão, essa configuração não será aplicada em sua tarefa cron, o que explicaria a falha.
Adicione a opção -S
a você curl
invocação para exibir mensagens de erro (mantendo -s
para ocultar outras mensagens).