Linux下记录Tomcat的连接数脚本

现在需要在Linux中了解每天Tomcat的连接数,可以通过获取Tomcat的端口连接数来掌握大致情况
Tomcat连接数脚本:

#!/bin/bash

TDATE=$(date '+%Y-%m-%d %H:%M:%S')

number=`netstat -an | grep 8081 | grep -v 'LISTEN' | awk '{$5=""; print $0}' | grep '10.222.11.74:8081'| wc -l`


echo $TDATE $number >> /usr/local/script/tomcat_conn/logs/$(date +%Y-%m-%d).log

通过netstat 过滤多余的信息,只记录连接到8081端口的外部链接,并将信息写入到每天的日志文件中。

脚本写好后,可以放到crontab中定期执行
在Linux中三种让crontab每秒执行任务的方法
第一种方法:

1.创建脚本文件

cat phplog.sh

2.编辑脚本内容

#!/bin/bash
while : ;do
/home/scripts.sh 2>/dev/null &
sleep 1
done

注意:第一次运行时请不要使用bash phplog.sh & 这种后台运行的方式,它会僵死的。
解决:可以把它放到计划任务使其运行,然后将计划任务中的此条目删除即可。最后把这个脚本放到/etc/rc.local让它每次开机都可以被运行。

第二种方法:

1.创建脚本文件

cat tomcat_crontab.sh

2.编辑脚本内容

#!/bin/bash  
  
step=3

for (( i = 0; i < 60; i=(i+step) )); do
    /bin/bash /usr/local/script/tomcat_conn/tomcat_conn.sh
    sleep $step
done
  
exit 0  

3.编辑crontab脚本

* * * * * /bin/bash /usr/local/script/tomcat_conn/tomcat_crontab.sh

原理:在sh使用for语句实现循环指定秒数执行。
注意:如果60不能整除间隔的秒数,则需要调整执行的时间。例如需要每7秒执行一次,就需要找到7与60的最小公倍数,7与60的最小公倍数是420(即7分钟)。
则 crontab.sh step的值为7,循环结束条件i<420, crontab -e可以输入以下语句来实现

*/7 * * * * /usr/local/script/tomcat_conn/tomcat_crontab.sh

第三种方法:

1.编辑crontab脚本

* * * * * /home/scripts.sh
* * * * * sleep 1 && /home/scripts.sh
* * * * * sleep 2 && /home/scripts.sh
* * * * * sleep 3 && /home/scripts.sh
…
* * * * * sleep 57 && /home/scripts.sh
* * * * * sleep 58 && /home/scripts.sh
* * * * * sleep 59 && /home/scripts.sh

如果间隔的秒数太少,例如2秒执行一次,这样就需要在crontab 加入60/2=30条语句。不建议使用此方法

posted @ 2018-01-17 16:47  归来似少年  阅读(652)  评论(0编辑  收藏  举报