shell小脚本 --综合小例子

[11640282@shell.testing-studio.com /]$ top -d 1 -n 5 -b | grep -i -E "\b24959\b" --line-buffer | awk 'BEGIN{print "cpu","mem"}{print $9,$10;total+=$9;total2+=$10} END{{print "-----";print total/5,total2/5}}'

这条命令可以用来统计某个进程的cpu和mem的情况
grep --line-buffer 可以实时输出不用等到 设定的5次结果全部结束才显示解雇
top -d 1 -n 5 -b : 1秒间隔执行5次 batchmode

[11640282@shell.testing-studio.com /]$ top -d 1 -n 5 -b | grep -i -E "\b24959\b" --line-buffer | awk 'BEGIN{print "cpu","mem"}{print $9,$10;total+=$9;total2+=$10} END{{print "-----";print total/5,total2/5}}'
cpu mem
6.2 1.6
1.0 1.6
2.0 1.6
1.0 1.6
2.0 1.6
2.44 1.6

比较一下更好的思路

top -b -d 1 -n 3|grep '^[ 0-9][1-9]'|less 先过滤掉头部信息只筛选出 进程信息行

[11640282@shell.testing-studio.com /]$ perf_get(){ top -b -d 1 -n 3|grep '^[ 0-9][1-9]'| awk '{print $1,$9,$10,$NF}'|grep -i "$1"| awk 'BEGIN{print "CPU","MEM"}{cpu+=$2;mem+=$3;print$0}END{print "";print "avg",cpu/NR,mem/NR}'; }

再来格式化
[11640282@shell.testing-studio.com /]$ perf_get(){ top -b -d 1 -n 3|grep '^[ 0-9][1-9]'| awk '{print $1,$9,$10,$NF}'|grep -i "$1"| awk 'BEGIN{OFS="\t";print "CPU","MEM"}{cpu+=$2;mem+=$3;print$0}END{print "";print "avg",cpu/NR,mem/NR}'; }

awk数组计数
在这里插入图片描述
总结函数
函数里定义local变量 更好
在这里插入图片描述
shell抽奖小脚本

  1. 了解怎么生产随机数 echo $RANDOM
  2. date +%s 取末尾也可以得到类似的随机数
  3. echo $((RANDOM%6+1)) 骰子6面 一次随机的点数 1-6
  4. 从一个文件读取user;uniq username.txt | grep -v “^$”| wc -l
  5. 假设读到了某人a,那么a之后就要被去除不能再抽奖
[11640282@shell.testing-studio.com swh]$ a1=(a b c)
[11640282@shell.testing-studio.com swh]$ echo $a1
a
[11640282@shell.testing-studio.com swh]$ echo ${a1[0]}
a
[11640282@shell.testing-studio.com swh]$ echo ${a1[1]}
b
[11640282@shell.testing-studio.com swh]$ echo ${a1[2]}
c
[11640282@shell.testing-studio.com swh]$ a1+=(d)
[11640282@shell.testing-studio.com swh]$ echo ${a1[3]}
[11640282@shell.testing-studio.com swh]$ for i in "${a1[@]}"; do echo $i ;done
a
b
c
d
[11640282@shell.testing-studio.com swh]$ for i in "${!a1[@]}"; do echo $i ;done
0
1
2
3
  1. all=(KaTeX parse error: Expected group after '^' at position 31: …txt | grep -v “^̲”)) 文件里所有的数据存到了变量all里
  2. for i in “${!all[@]}”; do echo $i; done 打出数组下标 注意!号
  3. for i in “${!all[@]}”; do ((RANDOM%6+1 >3)) && echo $i; done 如果骰子结果大于3 进入下一轮
  4. for i in " ! a l l [ @ ] " ; d o ( ( R A N D O M {!all[@]}"; do ((RANDOM%6+1 >3)) && sub+=( !all[@]";do((RANDOMi); done
  5. echo ${sub[@]} 验证是一个存放进入到下一轮的下标的数组
    在这里插入图片描述

调试shell
set -x
调用shell脚本

访问当前机器22端口的tcp连接数

function tcp_connections(){
netstat -tn 2>/dev/null |
grep “^tcp” |
grep -v ‘127.0.0.1’ |
awk ‘ 4   / : 22 4~/:22 4 /:22/ {print $5}’ |
wc -l
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值