O problema é que $HOME
variable não está definida no script. Depois de substituir HOME por caminho absoluto, o script funciona como deveria.
Aqui está o script sqlite_backup.sh em $ HOME /:
#! /bin/bash
now=$(date +%d)
echo "Welcome to Sqlite backup script"
sqlite3 /var/www/db/nbhydb.sqlite3 << EOF
.timeout 20000
.backup $HOME/nbhydb_backup_$now.sqlite3
EOF
echo "End of the script"
O script é testado digitando $HOME/sqlite_backup.sh
e há um arquivo de backup criado sob $ HOME. Aqui está o cron job (crontab -e):
# m h dom mon dow command
5 * * * * $HOME/sqlite_backup.sh
Aqui está o log do cron em / var / log / syslog:
Feb 3 13:05:01 ibm-testbox CRON[8961]: (root) CMD ($HOME/sqlite_backup.sh)
O comando está agendado para ser executado no 5º minuto de cada hora. No entanto, não há arquivo de backup gerado pela tarefa cron. O que sentimos falta? Obrigado.
ATUALIZAÇÃO:
o cron job é modificado para salvar o erro de execução:
5 * * * * $HOME/sqlite_backup.sh > $HOME/backup.log 2>&1
Após a execução, o log é:
Welcome to Sqlite backup script
End of the script
Não há erro algum no log. No entanto, ainda não há nbhydb_3_backup.sqlite3 encontrado.
O problema é que $HOME
variable não está definida no script. Depois de substituir HOME por caminho absoluto, o script funciona como deveria.