第一个蹩脚的Linux shell脚本——端口连接统计

目标

在linux下实现每天8点-0点每2分钟一次统计web服务器各端口的请求情况,并输出结果到相应的log文件--shell脚本

脚本存放目录

/opt/tomcat/bin/total.sh

主要命令

netstat、grep、touch、cd、vi、mkdir、chmod、crontab、cat、date

第一步:编写脚本

        1、进入脚本存放目录:cd /opt/tomcat

        2、创建文件夹、并进入: mkdir bin、cd bin

        3、创建total.sh文件:touch  total.sh

        4、写total.sh文件:vi total.sh

使用i命令在total.sh中输入以下内容

#! /bin/sh     #定义脚本运行shell
count=0   #定义特定端口下的连接数
count1=0  #定义特定端口下来自 JAVA的连接数

#写日志
WriteLog(){
   time=`date +%D' '%T`        #获取执行时间
   out=$time,$1,$count,$count1
   echo $out >>/opt/tomcat/bin/bingfa_$1.log  #记录统计日志

# 练习使用块注解及case语法
:<    case $1 in
     9080) echo $out >>/opt/tomcat/bin/log_9080.txt;;
     8080) echo $out >>/opt/tomcat/bin/log_8080.txt;;
     7080) echo $out >>/opt/tomcat/bin/log_7080.txt;;
     4080) echo $out >>/opt/tomcat/bin/log_4080.txt;;
     *) echo " error "
   esac
block
}
#统计并发量
Total(){
    count=`netstat -anop|grep $1 -wc`
    count1=`netstat -anop|grep java |grep $1 -wc`
    WriteLog $1
}
Total 5080  #调用

后按esc :wq保存退出,到此该脚本完成。

        5、给该文件添加可执行权限:chmod +x total.sh

设置完成后就可以使用total.sh来运行该脚本了。

第二步:设置定时器

接下来就是在了linux上设置使其定时执行:
linux有个Crontab程序可以很好的完成我们的目标,避免我们自己在shell脚本中写循环执行。具体如下:
crontab -l   (查看当前用户的定时程序)
crontab -e  (进入编辑用户定时程序)

使用i命令,写入

*/2 8-23 * * * /opt/tomcat/bin/total.sh

输完内容后按esc :wq 保存退出
这样total.sh就会在每天的8-23点每两分钟执行一次。

补充

  1. shell脚本中定义的变量是全局的,没有作用域之分。因为刚开始由于疏忽time=`date +%D' '%T`这句我是写在Total()函数中的,而在WirteLog()是直接调用$time的,结果发现程序正常运行,因此判定变量是全局的。
  2. shell脚本总的两种注释方式  #注释内容 或者  :<   前者用来注释行,后者用来注释块
  3. 脚本编写中的第三步可以使用 cat>total.sh 命令替代
  4. crontab运行日志存放位置:/var/log/cron*
  5. 查看crontab运行状态/etc/init.d/crond [status|start|stop|restart|reload] 

转载于:https://my.oschina.net/yeelee/blog/650901

你可能感兴趣的:(shell,操作系统,java)