SQL备份& Dropbox Uploader bash脚本不会退出并占用资源

时间:2015-05-20 04:23:01

标签: bash cron

 1 #!/bin/bash
 2
 3 USER="root"
 4 PASSWORD="??"
 5 OUTPUT="/home/northfolk28/SQLbackup"
 6 UPLOADER="/home/northfolk28/Dropbox-Uploader/dropbox_uploader.sh"
 7
 8 rm $OUTPUT/*.gz > /dev/null 2>&1
 9 echo "Deleted previous .gz"
10
11 databases=`mysql --user=root --password=?? -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`
12
13 for db in $databases; do
14     if [[ "$db" != "information_schema" ]] && [[ "$db" != _* ]] ; then
15         echo "Dumping database: $db"
16         mysqldump --force --opt --user=$USER --password=$PASSWORD --databases $db > $OUTPUT/`date +%Y%m%d`.$db.sql
17         gzip $OUTPUT/`date +%Y%m%d`.$db.sql
18         $UPLOADER upload $OUTPUT/`date +%Y%m%d`.$db.sql.gz /SQLbackup/`date +%Y%m%d`.$db.sql.gz
19     fi
20 done

我制作了备份脚本,自动备份SQL数据库并将其上传到dropbox上。 我使用Dropbox-Uploader (https://github.com/andreafabrizi/Dropbox-Uploader)。

当我在bash上执行它时,它运行得很好但是当它在cron上运行时,备份已完成,但脚本不会退出并永远占用资源。比如.. 4gb的磁盘和每个进程30%的CPU使用率?

在htop上显示

bash /home/northfolk28/Dropbox-Uploader/dropbox_uploader.sh /home/northfolk28/SQLbackup (date).mysql.sql.gz

操作系统是ubuntu服务器14.04,我只是将脚本放在/etc/cron.daily上 脚本有什么不对吗?

2 个答案:

答案 0 :(得分:0)

我遇到了一个问题。在CRON中使用%时,您需要按照http://www.ducea.com/2008/11/12/using-the-character-in-crontab-entries/

中的说明对其进行转义

我不确定它适用于您的情况,但您可以尝试:

date +\%Y\%m\%d。$ db.sql.gz

答案 1 :(得分:0)

基本上这种情况发生的原因(以及它与我在一起的原因)是在一个cron工作中你无法访问fill $ PATH变量。因此,您需要在调用中添加一个额外的参数,以告知dropbox uploader配置文件所在的位置,例如:

$ DROPBOX_UPLOADER_SCRIPT -f /home/username/.dropbox_uploader 上传$ ZIP_FILE_NAME $ DROPBOX_LOCATION