zoukankan      html  css  js  c++  java
  • Linux系统下编写shell脚本传入参数打印系统当前线程数到指定文件

      最近在做性能测试,要查看系统执行过程中线程数,很简单输入命令:netstat -anp |grep java |wc -l,可以查询。但是如何在执行过程定时打印系统线程数且将结果输出到指定文件呢?也很简单我们直接写一个shell脚本执行下就可以了。以下是思路

         1:创建目录,且创建个脚本:mkdir epayshell;   touch output-thread.sh,编辑脚本 vi output-thread.sh

      2:编写脚本:设置变量step=5,该参数控制每5秒执行一次命令;outFile变量指定输出文件路径为当前路径;for循环判断小于60,则每5s执行date、netstat -anp |grep java |wc -l命令且将结果输出到outFile当前路径下。

    step=10

    outFile=out.log

    for (( i = 0; i < 20; i=(i+step) )); do
            date >> $outFile
            netstat -anp |grep java |wc -l >> $outFile
            sleep $step
    done
    exit 0

       3:保存脚本,执行结果。

       执行脚本命令:sh ./output-thread.sh。在当前路径下生成文件out.log。打开可看见结果

    4:优化该脚本,可以参数化执行该脚本。

       从步骤2可以看出脚本只能执行2次,且脚本每10s执行命令date、netstat -anp |grep java |wc -l,没有实现参数化。可以优化。

      采用$0,$1,$2..等方式获取脚本命令行传入的参数。$1第一个参数为:执行时间;$2第一个参数为:多少秒执行一次;$3第一个参数为:执行结果文件名,如果第三个参数为空则默认输出的文件名为out.log

    execTime=$1
    step=$2
    outFile=out.log
    if [ -n "$3" ] ;then
        outFile=$3
    fi

    rm -rf $outFile

    for (( i = 0; i < execTime; i=(i+step) )); do
            date >> $outFile
            netstat -anp |grep java |wc -l >> $outFile
            sleep $step
    done

    exit 0

       例如执行:sh ./output-thread.sh 20 10 out1.log;表明脚本执行次数为2(20/10=2);每10秒执行一次;输出文件名为out1.log。执行结果如图

  • 相关阅读:
    HDFS常用命令总结
    mac 安装zmap
    使用scrapy-redis搭建分布式爬虫环境
    xpath选择兄弟节点、返回上一级和选择多个属性
    什么是套接字(Socket)
    socket编程——一个简单的例子
    python之 __getattr__、__getattr__、__getitem__、__setitem__ 使用
    如何快速转载文章
    如何让类也变成可以迭代的对象
    leecode 第二题 简单
  • 原文地址:https://www.cnblogs.com/qiaoli0726/p/9908632.html
Copyright © 2011-2022 走看看