O script Perl está funcionando bem no shell interativo, mas não como uma tarefa cron

1

Eu instalei dirvish para alguns backups. Eu inicializei um cofre (host). E agora estou usando o seguinte script para executá-lo:

#!/bin/sh 
/sbin/dirvish-expire --quiet && /sbin/dirvish-runall --quiet
rc=$?
exit $rc

O problema é que não consigo encontrar uma maneira de solucioná-lo mais. Por algum motivo, o segundo comando dirvish-runall --quiet sai com o status 1 quando é executado como uma tarefa cron. Quando está no modo interativo, funciona bem sem qualquer problema.

Por favor, você pode ajudar?

    
por shad0VV 08.09.2015 / 22:48

1 resposta

0

@TomHunt apontou o problema em seu comentário e merece crédito pela resposta. Eu só queria expandir seu ponto para que os futuros problemas do cron job possam ser resolvidos mais facilmente.

Minha sugestão seria capturar seu ambiente atual (funcional) e também o ambiente do script de tarefas cron, depois comparar os dois para ver o que está faltando. Lembre-se que o cron é iniciado no momento da inicialização e nunca lê nenhum dos seus arquivos de ambiente do shell (~ / .bashrc, ~ / .bash_profile ou qualquer outra coisa carregada de lá).

  1. set | sort > /tmp/set.out
  2. Adicione temporariamente set | sort > /tmp/cron-set.out a o script de shell do seu trabalho cron
  3. diff /tmp/cron-set.out /tmp/set.out
  4. Encontre as variáveis de ambiente que estão faltando e adicione-as ao script de shell da tarefa do cron (removendo a adição set temporária acima).
por 09.09.2015 / 02:26