shell如何提取最新更新的日志

为了监控mysql操作进程,看下那些sql语句使用不合理,我编写了一个脚本,如下#!/bin/bash
MYSQL_PW='dz*****'
logdir=/data/mysql-log
logfile=$logdir/thread.log
[ ! -d $logdir ] && mkdir -p $logdir
while :;
do
        date >>$logfile
        thr=`mysql -uroot -p$MYSQL_PW -S /tmp/mysql.sock -e "status"|grep Thread
s|awk '{print $2}'`

        echo $thr >>$logfile
        [ $thr -gt 50 ] && mysql -uroot -p$MYSQL_PW -S /tmp/mysql.sock -e "show
full processlist" >$logdir/`date +%y%m%d-%H%M`-proc.log
        echo ====================== >>$logfile
        awk
        sleep 30
done   

    这个脚本作用如果访问连接数大于50的话,证明某条语句被读锁,然后会被截取出来,(例:110608-0509-proc.log 110608-05010-proc.log 110608-0511-proc.log) 现在想通过一个脚本只选中第一个时间更新的日志就是110608-0509-proc.log,然后在这个日志中提取
"Sending data" 这个关键字段,然后通过awk 提取pid ,最后进行kill。
   现在问题是我怎么去选中第一个时间段更新的日志,后面的基本上都是locked,所以只要找出第一个时间就可以。
  谢谢!!

作者: loveradmin   发布时间: 2011-06-09

搞个Flag,例如:Flag=0时表示第一次,非0时则相反……

作者: xiaopan3322   发布时间: 2011-06-09

回复 loveradmin


   
看你的日志名称 你的这个脚本应该是一分钟执行一次,那么你的kill脚本是否也是一分钟执行一次?

作者: tomasea   发布时间: 2011-06-09

回复 loveradmin


    另外一点,我在想,你为何不一个脚本完成两个任务,一个是写日志,一个就是直接把进程杀死,干嘛还要再来个脚本去找日志文件,再去读pid杀死进程呢

作者: tomasea   发布时间: 2011-06-09