I have a perl script that is running every 5 minutes to see if the mysql server 
has a locked query, once it does, it sends me an email with thread_connected 
and the query. I was curious, how could I write into the script to send me the 
information one time instead of every 5 minutes after it does find a lock? 
Below is a part where it looks for the threads, then send email:

       # Thread connections
           my $username = $np->opts->user;
        my $password = $np->opts->password;
        my $hostname = $np->opts->hostname;
        my $contact  =  $np->opts->contactemail;
        my $sendernot = $np->opts->senderemail;
        my $locked = $query_hr->{Info};
        my $cmdline = "/usr/bin/mysql -h $hostname -P 3306 -u $username 
-p$password";
        my $query_output = `/bin/echo "SHOW GLOBAL STATUS LIKE 
'Threads_connected';" \| $cmdline 2>/dev/null \| /bin/grep "Threads_connected"`;
        unless ($query_output =~ /^Threads_connected\s+(\d+)\s+$/) {
        print "Unknown: Unable to read output from MySQL\n";
        }
        # Send Email
        my $msg = MIME::Lite->new(
            From        =>  $sendernot,
            To          =>  $contact,
            Subject     =>  'MySQL MyISAM lock, additional information',
            Encoding    =>  'base64',
            Data        =>  qq{
              Number of $query_output
              Query causing lock: $locked
            }
        );
        $msg->send;

Reply via email to