• 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。执行结果如图

  • 相关阅读:
    Linux Shell 01 脚本与变量
    Linux下shell颜色配置
    Linux下Redis安装及配置
    Linux Shell 03 条件测试
    OSX下VirtualBox安装CentOS
    Log4j配置与使用
    Linux 环境变量的配置
    OS X下安装Redis及配置开机启动
    圈复杂度
    (转)Qt Model/View 学习笔记 (一)——Qt Model/View模式简介
  • 原文地址:https://www.cnblogs.com/qiaoli0726/p/9908632.html
Copyright © 2020-2023  润新知