`
liunancun
  • 浏览: 33937 次
社区版块
存档分类
最新评论

杀SQL脚本

 
阅读更多
DB_USERNAME=root
DB_PASSWORD=123456

select=`mysql -u$DB_USERNAME -p$DB_PASSWORD -N -e "SELECT id, time, info FROM information_schema.processlist WHERE command = 'query' AND time > 20 ORDER BY time DESC"`

echo ====================$(date +%F%n%T) start====================

# [0100,0500)=12
# [0500,0800)=10
# [0800,1000)=08
# [1000,2000)=05
# [2000,3000)=04
# [3000,4000)=03
# [4000,5000)=02
# [5000,0000)=01
count_0100=0
kill_0100=""
count_0500=0
kill_0500=""
count_0800=0
kill_0800=""
count_1000=0
kill_1000=""
count_2000=0
kill_2000=""
count_3000=0
kill_3000=""
count_4000=0
kill_4000=""
count_5000=0
kill_5000=""

IFS=$'\n'
for line in `echo -e "$select"`; do
  if [ -z "$line" ]; then
    continue
  fi

  echo $line

  id=`echo $line | awk '{print int($1)}'`

  if [ "$id" -eq 0 ]; then
    continue
  fi

  time=`echo $line | awk '{print int($2)}'`

  if [ $time -ge 100 -a $time -lt 500 ]; then
    count_0100=`expr $count_0100 + 1`
    kill_0100=`echo ${kill_0100}kill "$id;"`
  elif [ $time -ge 500 -a $time -lt 800 ]; then
    count_0500=`expr $count_0500 + 1`
    kill_0500=`echo ${kill_0500}kill "$id;"`
  elif [ $time -ge 800 -a $time -lt 1000 ]; then
    count_0800=`expr $count_0800 + 1`
    kill_0800=`echo ${kill_0800}kill "$id;"`
  elif [ $time -ge 1000 -a $time -lt 2000 ]; then
    count_1000=`expr $count_1000 + 1`
    kill_1000=`echo ${kill_1000}kill "$id;"`
  elif [ $time -ge 2000 -a $time -lt 3000 ]; then
    count_2000=`expr $count_2000 + 1`
    kill_2000=`echo ${kill_2000}kill "$id;"`
  elif [ $time -ge 3000 -a $time -lt 4000 ]; then
    count_3000=`expr $count_3000 + 1`
    kill_3000=`echo ${kill_3000}kill "$id;"`
  elif [ $time -ge 4000 -a $time -lt 5000 ]; then
    count_4000=`expr $count_4000 + 1`
    kill_4000=`echo ${kill_4000}kill "$id;"`
  elif [ $time -ge 5000 ]; then
    count_5000=`expr $count_5000 + 1`
    kill_5000=`echo ${kill_5000}kill "$id;"`
  fi
done

kill_sql=""

if [ "$count_0100" -ge 12 ]; then
  kill_sql=`echo ${kill_sql}${kill_0100}`
fi
if [ "$count_0500" -ge 10 ]; then
  kill_sql=`echo ${kill_sql}${kill_0500}`
fi
if [ "$count_0800" -ge  8 ]; then
  kill_sql=`echo ${kill_sql}${kill_0800}`
fi
if [ "$count_1000" -ge  5 ]; then
  kill_sql=`echo ${kill_sql}${kill_1000}`
fi
if [ "$count_2000" -ge  4 ]; then
  kill_sql=`echo ${kill_sql}${kill_2000}`
fi
if [ "$count_3000" -ge  3 ]; then
  kill_sql=`echo ${kill_sql}${kill_3000}`
fi
if [ "$count_4000" -ge  2 ]; then
  kill_sql=`echo ${kill_sql}${kill_4000}`
fi
if [ "$count_5000" -ge  1 ]; then
  kill_sql=`echo ${kill_sql}${kill_5000}`
fi

if [ -n "$kill_sql" ]; then
  echo ====================$(date +%F%n%T) kill=====================
  echo $kill_sql
  mysql -u$DB_USERNAME -p$DB_PASSWORD -e "$kill_sql"
fi

echo ====================$(date +%F%n%T) end======================
分享到:
评论

相关推荐

    SQLServler自动杀死死锁进程

    5. **SQL脚本执行**: 提供的压缩包文件"Sqlserver自动杀死死锁进程sql"很可能包含了一个示例脚本,用于配置SQL Server自动处理死锁。执行这样的脚本通常涉及修改数据库引擎的配置参数,或者创建存储过程来自动检测...

    sqlserver2000中如何自动杀死死锁进程.pdf

    总结而言,文档中提供的存储过程`sp_killlock`是用于自动检测并杀死死锁进程的一种方法,在SQL Server 2000环境中通过编写特定的SQL脚本和批处理文件,实现对死锁进程的自动化处理。这对于数据库管理员来说,可以...

    脚本渗透免杀

    ### 脚本渗透免杀 #### 知识点一:免杀技术概览 免杀技术是黑客为了绕过目标系统的安全防护措施,使得恶意代码能够顺利执行而不被检测的技术。在渗透测试中,合理运用免杀技术可以帮助安全专家更好地发现系统中存在...

    SQLtools正月初五免杀专版

    5. 脚本支持:SQLtools允许用户创建和运行SQL脚本,批量执行数据库操作,提高了工作效率。 6. 安全性:免杀专版可能意味着软件在保证功能的同时,通过优化代码或添加签名等方式避免了被安全软件误判,提升了用户的...

    sqlserver防sql注入杀病毒代码.rar

    在标题和描述中提到的"sqlserver防sql注入杀病毒代码.rar"是一个压缩包,包含用于保护SQL Server免受SQL注入攻击和清除可能存在的病毒的资源。下面将详细介绍SQL注入、SQL Server 2000的防护措施以及如何处理病毒...

    SQLServer200自动杀锁

    在"1建表kill_log.sql"文件中,可能是创建一个日志表的脚本,用于记录每次自动杀锁的事件,包括被杀事务的信息、死锁发生的时间等。这样可以便于后续的分析和优化,找出引发死锁的根源,避免重复的问题。 总结一下...

    sqlserver查杀死锁

    ### SQL Server 查杀死锁 #### 一、理解死锁与锁定 在SQL Server中,死锁是指两个或多个事务在等待对方释放资源时形成的僵局。这种情况下,没有一方能够继续执行,直到管理员介入打破这一僵局。锁定则是指一个事务...

    迷你版SQL2000服务器

    ^计划任务中执行SQL语句变更为执行SQL脚本文件,支持GO分隔,方便执行复杂任务。 1.1.7 +配置文件中增加AppTitle字符串项,如果有输入内容,则在启动时会以该项的值为窗口标题;繁体用户请将配置文件保存为Unicode...

    lock_sql.rar_sql lock

    总的来说,"lock_sql.rar_sql lock"涉及的核心知识点是SQL数据库的锁定机制,以及如何通过查询脚本来管理和解决由锁定引起的数据库问题。通过学习和运用这些知识,数据库管理员和开发人员可以更有效地管理和维护他们...

    sql server 2008笔记

    - 删除大量数据时,`DELETE TOP(N)`和编写脚本是常用方法。 - 分区表用于高效管理和删除归档数据,但需要谨慎操作以避免影响整体性能。 8. **数据迁移与恢复**: - 数据库迁移和恢复要求源与目标SQL Server版本...

    经典SQL语句大全

    exec sp_executesql @sql 注意:在top后不能直接跟一个变量,所以在实际应用中只有这样的进行特殊的处理。Rid为一个标识列,如果top后还有具体的字段,这样做是非常有好处的。因为这样可以避免 top的字段如果是...

    Linux 配置php链接sqlserver.docx

    为了测试连接,可以编写一个简单的PHP脚本,尝试使用mssql_connect或PDO_DBLIB函数连接到SQL Server数据库。如果一切正常,脚本应该能成功建立连接并执行查询。 请注意,配置过程中可能会遇到依赖问题,如缺少某些...

    常用SQL.txt

    根据提供的文件信息,我们可以归纳出...以上是根据提供的SQL脚本总结出来的关键知识点,涵盖了数据库查询、用户管理、性能监控、表空间管理和审计等多个方面。这些知识对于数据库管理员和开发人员来说都是非常实用的。

    SQL死锁,删除失败解决办法

    下面是一段用于检测和解决SQL死锁的脚本示例: ```sql SELECT t2.username, t2.sid, t2.serial#, t2.logon_time FROM v$locked_object t1, v$session t2 WHERE t1.session_id = t2.sid ORDER BY t2.logon_time; ```...

    SQL执行器 黑基VIP内部版(勿外传).exe

    5. **脚本编写与执行**:SQL执行器支持编写和执行SQL脚本,这对于批量操作或自动化任务非常有用。用户可以编写一系列SQL语句,一次性执行,提高工作效率。 6. **性能监控**:为了帮助用户了解数据库性能,部分SQL...

    杀掉oracle在线用户脚本分享

    本文将详细介绍一个用于杀掉Oracle在线用户的脚本,该脚本可以帮助管理员高效地终止特定用户的会话。 首先,我们要理解这个脚本的基本结构和工作原理。脚本的主要功能是通过SQL命令查询出指定用户名的所有在线会话...

    ORACLE DBA常用脚本

    - **杀死会话**:`ALTER SYSTEM KILL SESSION 'sid, #serial';` 通过查询特定用户的活跃会话并针对性地终止,可以有效解决因用户操作导致的数据库资源占用问题。 #### 4. 打开游标管理 - **显示打开游标参数**:`...

    迷你SQL2000

    ^计划任务中执行SQL语句变更为执行SQL脚本文件,支持GO分隔,方便执行复杂任务。 1.1.7 +配置文件中增加AppTitle字符串项,如果有输入内容,则在启动时会以该项的值为窗口标题;繁体用户请将配置文件保存为Unicode...

    mysql服务端杀连接shell

    "mysql服务端杀连接shell"就是针对这类问题的一个解决方案,它通常是一个脚本,用于在服务端终止不必要的或异常的MySQL连接。 在描述中提到的博文链接(由于实际无法访问,这里不做具体分析),通常会包含如何编写...

Global site tag (gtag.js) - Google Analytics