这是 $HOME/ 下的脚本 sqlite_backup.sh:
#! /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"
脚本通过输入进行测试$HOME/sqlite_backup.sh
,并且在 $HOME 下创建了一个备份文件。这是 cron 作业(crontab -e):
# m h dom mon dow command
5 * * * * $HOME/sqlite_backup.sh
这是 /var/log/syslog 下的 cron 日志:
Feb 3 13:05:01 ibm-testbox CRON[8961]: (root) CMD ($HOME/sqlite_backup.sh)
该命令计划在每小时的第 5 分钟运行。但是 cron 作业没有生成备份文件。我们错过了什么?谢谢。
更新:
修改cron job以保存执行错误:
5 * * * * $HOME/sqlite_backup.sh > $HOME/backup.log 2>&1
执行之后日志为:
Welcome to Sqlite backup script
End of the script
日志中没有任何错误。但是仍然找不到 nbhydb_3_backup.sqlite3。
答案1
问题是$HOME
脚本中未定义变量。将 HOME 替换为绝对路径后,脚本可以正常工作。