Cronjob não sendo executado

0

Estou tentando executar rsync-books com um crontab. Digitando crontab -e de saídas:

55 12 * * * diegoaguilar /storage/bin/rsync-books

Onde /storage/bin/rsync-books se parece com isto:

if [ -d "/media/Beagle/books" ]; then
  rsync -rP --delete --verbose /storage/Copy/Books/ /media/Beagle/books >> ~/rsync-books.log
fi

Só para confirmar, esse script tem permissões executáveis. Tentei aguardar naquele momento o comando, quando / media / Beagle / books existia e nem o rsync anyhing nem o arquivo de log foi criado.

Há algo que me falta?

    
por diegoaguilar 09.11.2015 / 21:04

1 resposta

3

O Cron executa comandos sem um ambiente, portanto não há PATH variable set. Por isso, é necessário especificar o caminho completo para rsync em seu script.

if [ -d "/media/Beagle/books" ]; then
  /usr/bin/rsync -rP --delete --verbose /storage/Copy/Books/ /media/Beagle/books >> ~/rsync-books.log
fi

Além disso, se você estiver executando crontab -e , não inclua o nome de usuário na entrada do crontab. Seu crontab deve ser parecido com

55 12 * * * /storage/bin/rsync-books

EDIT: o cron é executado em um shell não interativo para que o ambiente (e o PATH) seja diferente do que você espera. É sempre melhor especificar caminhos completos em qualquer script que será executado a partir do cron.

    
por 09.11.2015 / 21:18

Tags