发表于: 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 语句 还是 没看明白
评论