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上 脚本有什么不对吗?
答案 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