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

SQL Backup & Dropbox Uploader bash script won't exit and takes up resources

 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-Uploader (https://github.com/andreafabrizi/Dropbox-Uploader).

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

它在 htop 上显示

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

OS 是 ubuntu 服务器 14.04,我只是把脚本放在 /etc/cron.daily 剧本有错吗??

我有一个接近那个的问题。在 CRON 中使用 % 时,您需要按照那里的说明对其进行转义 http://www.ducea.com/2008/11/12/using-the-character-in-crontab-entries/

我不确定它是否适用于你的情况,但你可以试试:

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

基本上,发生这种情况的原因(以及我的原因)是在 cron 作业中您无权访问 fill $PATH 变量。因此,您需要在调用中添加一个附加参数,以告知保管箱上传者配置文件的位置,例如:

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