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条语句。不建议使用此方法