发表于: 2018-05-20 21:40:29

1 1432


今天完成的事情:


top 的数据 详解:


前五行是当前系统情况整体的统计信息区。下面我们看每一行信息的具体意义。

第一行,任务队列信息,同 uptime 命令的执行结果,具体参数说明情况如下:
  07:31:54 — 当前系统时间
  up 3 days, 21:52 — 系统已经运行了3天21小时52分钟,在这期间没有关过机。
  3 users — ------当前有1个用户登录系统
  load average: 0.08, 0.02, 0.0 —    load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
  load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。





第二行,Tasks — 任务(进程),具体信息说明如下:
  系统现在共有110个进程,其中处于运行中的有1个,109个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。



第三行,cpu状态信息,具体属性说明如下:
  2.0 us — 用户空间占用CPU的百分比。
  3.7 sy — 内核空间占用CPU的百分比。
  0.0 ni — 改变过优先级的进程占用CPU的百分比
  94.3 id — 空闲CPU百分比
  0.0 wa — IO等待占用CPU的百分比
  0.0 hi — 硬中断(Hardware IRQ)占用CPU的百分比
  0.0 si — 软中断(Software Interrupts)占用CPU的百分比
  在这里CPU的使用比率和windows概念不同,需要理解linux系统用户空间和内核空间的相关知识!



第四行,内存状态,具体信息如下:
  1917272k total — 物理内存总量(1GB)
  439240k used — 使用中的内存总量(660M)
  323536k free — 空闲内存总量(110M)
  1154496k buffers — 缓存的内存量 (230M)

第五行,swap交换分区信息,具体信息说明如下:
  0 total — 交换区总量(1GB)
  0 used — 使用的交换区总量(297M)
  0 free — 空闲交换区总量(750M)
  1270368k avail Mem — 表示可用于进程下一次分配的物理内存数量,这个大小一般比free大一点,因为除了free的空间外,系统还能立即释放出一些空间来

备注:



第六行以下:各进程(任务)的状态监控,项目列信息说明如下:
  PID — 进程id
  USER — 进程所有者
  PR — 进程优先级
  NI — nice值。负值表示高优先级,正值表示低优先级
  VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
  RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
  SHR — 共享内存大小,单位kb
  S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
  %CPU — 上次更新到现在的CPU时间占用百分比
  %MEM — 进程使用的物理内存百分比
  TIME+ — 进程使用的CPU时间总计,单位1/100秒

  COMMAND — 进程名称(命令名/命令行)


活动进程在最顶端变化。

又看了一下shell的命令 语法      https://www.cnblogs.com/zhuandshao/p/7193564.html

名称说明
$0脚本名称
$1-9     脚本执行时的参数1到参数9
$?脚本的返回值    
$#脚本执行时,输入的参数的个数
$@输入的参数的具体内容(将输入的参数作为一个多个对象,即是所有参数的一个列表
$*输入的参数的具体内容(将输入的参数作为一个单词



$* 和 $@ 变量的的不同之处

$* 不用 双引号时 遍历出来的 是和 $@ 一样的。

源代码:

echo "脚本的名字是:"$0

n=1

echo "使用\$@的参数列表为:"$@

for temstr in "$@"

do

        echo "第$n个参数是:" $temstr

        let n+=1

done

n=1

echo "使用\$*的参数列表为:"$*

for temstr in "$*"

do

        echo "第$n个参数是:" $temstr

        let n+=1

done

执行结果:

$ ./test.sh 1 2 3 4

脚本的名字是:./test.sh

使用$@的参数列表为:1 2 3 4

第1个参数是: 1

第2个参数是: 2

第3个参数是: 3

第4个参数是: 4

使用$*的参数列表为:1 2 3 4

第1个参数是: 1 2 3 4

$* 不加双引号时


源码:

#!/bin/bash

n=1

for tem in $*

do 

    echo $n is $tem

    let n+=1

done 

执行结果:

# ./test.sh 1 2 3 4 

is 1

is 2

is 3

is 4




if else 的语法:

https://www.cnblogs.com/matthewma/p/6995479.html

if [ $1x == "ab"x ]; then    

      echo "you had enter ab"

elif [ $1x == "cd"x ]; then 

      echo "you had enter cd

else

       echo "you had enter unexpected word"fi


对比字符串只能使用==、<、>、!=、-z、-n

在这个语句中   比较 $1 == "ab" 是字符串比较 。 后面的x 是固定字符 没有会报错 ,x 可以是 a,或 b

假如不用 x 则可以  这样写   if [[ $1 == "ab"]] 


if在对比时可以使用正则表达式,如if [[ $1 == a*a ]](或者if [ $1x == a*ax ])。如果使用""把a*a包围起来,*就会变成字符*,而不是正则表达式中的*


if 条件里对比数字。

对比数字使用既能使用-eq、-ne、-gt、-ge、-lt、-le,也能使用==、<、>、!=。其中-eq的意思是equal,-ne是unequal,-gt是greater than,-ge是greater than or equal to,-lt是less than,-le是less than or equal to。


看了任务中要记录Tomcat中的DB访问时间和Controller时间 就要用到 AOP,看了一点儿 AOP。



明天的计划: 搞懂AOP  如何记录 执行时间日志。



遇到的问题:

这个if else  语句 还是 没看明白 










返回列表 返回列表
评论

    分享到