#!/bin/bash export PATH=/usr/local/bin:/usr/bin:$PATH DB=${1?Missing database to check!} shift LOGDIR=/var/log/db-logs LOG=$LOGDIR/${DB}-check.log if [ x$1 != x ] then LOG='' else [[ ! -d "$LOGDIR" ]] && mkdir -p $LOGDIR fi function init_log() { if [ x$LOG != x ] then cat /dev/null > $LOG fi } function logger() { local msg="$*" if [ x$LOG != x ] then echo "$msg" >> $LOG else echo "$msg" fi } PIDFILE=/var/run/$(basename $0)-${DB}.pid db() { echo "$*" | mysql -u root -s $DB return 0; } if [ -f "$PIDFILE" ] then # Another instance running, probably doing a repair exit 0 fi remove_pid() { rm -f $PIDFILE || logger "Can't remove $PIDFILE!" return 0; } echo $$ > $PIDFILE || exit 1 trap 'remove_pid' 1 2 3 5 9 11 13 15 19 init_log logger "Start: $(date)" for table in $(db 'SHOW TABLES') do start=$(date +%s) output="$(check-mysql-db-table $DB $table 2>&1)" if [ x"$output" != "x" ] then logger "$output" fi end=$(date +%s) total=$(($end - $start)) logger " * $table: ${total}s " done remove_pid logger "End: $(date)" exit 0