Este é o seu trabalho no cron e está bem:
10 09 * * * /home/ram-pc/Desktop/bala/personal/dump.sh
Defina para disparar todos os dias às 9h10. Mas olhar para o seu script mostra o problema:
cd
cd Desktop/bala/personal
mkdir $(date +%Y%m%d)
cd $(date +%Y%m%d)
mysqldump -u root -p*** --all-databases |gzip -9 >database-$(date +%Y%m%d).sql.gz
Quando uma tarefa cron é executada, ela não é executada como você - o usuário -, portanto, os caminhos para os arquivos binários não serão carregados. Então o script não tem idéia de onde mysqldump
é. Então você deve executar which
para descobrir qual é o caminho completo:
which mysqldump
E a saída deve ser algo assim; usando um exemplo genérico aqui:
/usr/local/bin/mysqldump
Além disso, você deve adicionar uma designação de script como a primeira linha do arquivo, para que o shell saiba qual ambiente deve ser executado. Além disso, o cd
e o seguinte cd Desktop/bala/personal
podem ser simplificados para cd ~/Desktop/bala/personal
. Então, todo o novo script seria parecido com isto:
#!/usr/bin/env bash
cd ~/Desktop/bala/personal
mkdir $(date +%Y%m%d)
cd $(date +%Y%m%d)
/usr/local/bin/mysqldump -u root -p*** --all-databases |gzip -9 >database-$(date +%Y%m%d).sql.gz
Tente executar isso sozinho - na linha de comando - para ver se funciona. E se isso acontecer, execute-o a partir do cron novamente.