O problema usual com os trabalhos 'cron' é que eles têm um ambiente zero - ao contrário dos trabalhos 'at' que copiam seu ambiente. Quando algo funciona a partir da linha de comando e não do 'cron', minha experiência é que 'ambiente' é um dos problemas mais comuns. Ocasionalmente, você se depara com outro problema - as tarefas 'cron' não são executadas com um terminal e, ocasionalmente, os programas são afetados por isso. No entanto, isso está na faixa de 1% em comparação com 99% para problemas ambientais.
A outra técnica chave que uso é sempre executar um script de shell a partir do 'cron'; o shell script garante que o ambiente esteja configurado corretamente e, em seguida, execute o programa real. Se um trabalho 'cron' está me dando problemas, posso ajustar o script para fazer coisas úteis como esta:
{
date
env | sort
set -x
...what was there before adding the debug...
} >/tmp/cron.jobname.$$ 2>&1
Isso redireciona toda a saída padrão de saída e erro padrão para um nome de arquivo. Você pode criar registros de data e hora no nome do arquivo, se preferir, ao ID do processo. Analisar os arquivos de log geralmente revela os problemas rapidamente.