A simple script of asterisk database cleanup.

I added a check of free disk space





Create a script file in the folder /home/asterisk/

touch /home/asterisk/housekeeping.sh

#!/bin/bash MYSQL_USER="user" # MySQL user MYSQL_PASSWORD="password" # MySQL password KEEP_DAYS="180" # Days EMAIL="test@shrainer.me" # email to send notification EMAILFROM="pbx@shrainer.me" # sender email DFUSE=`df | grep /dev/sda1 | awk '{print $5}' | sed '{s/.$//;}'` if [ $DFUSE -lt 47 ] then if ps aux | grep "[m]ysql" > /dev/null then mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -e"delete from asteriskcdrdb.cdr where datediff(now(), calldate) > $KEEP_DAYS;" mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -e"delete from asteriskcdrdb.cel where datediff(now(), eventtime) > $KEEP_DAYS;" if ! mysqlcheck -u$MYSQL_USER -p$MYSQL_PASSWORD --optimize asteriskcdrdb; then /usr/local/bin/sendEmail -f $EMAILFROM -t $EMAIL -o message-charset=utf-8 -u "Housekeeping DB" -m "Error housekeeping asteriskcdrdb" -s smtp.example.com exit 0 fi fi fi else /usr/local/bin/sendEmail -f $EMAILFROM -t $EMAIL -o message-charset=utf-8 -u "Housekeeping DB" -m "No free space to housekeeping asteriskcdrdb" -s smtp.example.com fi

chmod +x /home/asterisk/housekeeping.sh

17 01 * * * root /bin/bash /home/asterisk/housekeeping.sh > /dev/null 2>&1

!! Be careful you have free disk space equal to the size of the database. That need for defragmentation of the database.Do not forget set access rights to the fileAnd add it to the cron on a daily executionВаш дедушка/