O problema básico parece ser: O uso de ~
que se refere ao home
do usuário atual.
Mais detalhes sobre o problema:
- Quando você executa o comando manualmente, o valor de
~
é/home/myuser
(myuser
home) - Quando você executa o comando usando cron, o valor de
~
é/root
(root
home)
Como o arquivo não está em /root/nightly_backup.sh
cron
não pode executá-lo.
Solução:
Substituir:
0 4 * * * bash ~/nightly_backup.sh
Com:
0 4 * * * /home/myuser/nightly_backup.sh
Note que você deve ter certeza de que o shell-script é executável, executando o seguinte comando (uma vez):
chmod +x /home/myuser/nightly_backup.sh
Observação: sobre sua outra pergunta
O que significa "nenhum MTA instalado, descartando a saída" significa?
Foi respondido aqui
Resumindo: Isso acontece porque as tarefas do cron estão produzindo a saída e, em seguida, o daemon do cron tenta enviar essa saída por e-mail para você, enquanto você não tem o serviço de e-mail instalado em seu sistema.
Você pode resolvê-lo usando um dos seguintes métodos (mais informações em aqui )
- Ignore a mensagem
- Instalar servidor de email
- Redirecionar a saída da tarefa cron para / dev / null
- Redirecione a saída da tarefa cron para
logger
e você a verá emsyslog
logs