As principais diferenças entre executar um comando do cron e rodar na linha de comando são:
- o cron provavelmente está usando um shell diferente (geralmente
/bin/sh
); - o cron está sendo executado em um ambiente pequeno (quais dependem da implementação do cron, portanto, verifique a página
cron(8)
oucrontab(5)
man; geralmente há apenasHOME
, talvezSHELL
, talvezLOGNAME
, talvezUSER
e um pequenoPATH
) - o cron trata o caractere
%
especialmente (ele é transformado em uma nova linha); - as tarefas do cron são executadas sem um terminal ou ambiente gráfico.
A invocação a seguir irá executar o trecho de código, como se fosse invocado pelo cron. Presumo que o fragmento não contenha os caracteres '
ou %
.
env - HOME="$HOME" USER="$USER" PATH=/usr/bin:/bin /bin/sh -c 'shell snippet' </dev/null >job.log 2>&1
Veja também executando um script sh do cron , o que pode ajudar a resolver seu problema.