线上第九期_Shell 实战_20190413

Linux命令

文件

![](/uploads/photo/2019/438f4547-4583-4f6b-9ea8-d69684c73083.png!large =600x)

CGI技术

![](/uploads/photo/2019/8a76b09e-84f0-41c7-a5e2-5819526e00eb.png!large =600x)
![](/uploads/photo/2019/45646f95-fee8-4f99-bb75-24f341cee97d.png!large =600x)

进程

  • ps
  • top
  • vmstat
ps -ef
ps aux
top -b -d 1 -n 20 -p 19912

注意:ps的cpu利用率是不准的,建议使用top

可视化

  • gunplot

Android命令

click(){
local index=1
[ -n "$2" ] && index=$2
adb shell input tap \\
$(
adb shell "uiautomator dump --compressed && cat /sdcard/window_dump.xml" \\
| sed 's#<node#^<node>#g' \\
| awk 'BEGIN{RS="^"}{print $0}' \\
| grep "$1"  \\
| sed  -n "$index"p \\
| awk 'BEGIN{FS=",|\\\\[|\\\\]"}{print ($2+$5)/2,($3+$6)/2}' 
)
}

input(){
adb shell input text 123
}

swipe(){
width=$(adb shell wm size | grep -oE "[0-9]+" | head -1)
height=$(adb shell wm size | grep -oE "[0-9]+" | tail -1)
adb shell input swipe $(awk 'BEGIN{print '$width'*'$1'}') $(awk 'BEGIN{print '$width'*'$2'}')  $(awk 'BEGIN{print '$width'*'$3'}') $(awk 'BEGIN{print '$width'*'$4'}')  1000
}

iOS命令(iOS自动化部分再细致讲解)

数据分析与可视化

![](/uploads/photo/2019/8d1f635c-98ed-4598-879e-33e81bbef360.png!large =600x)

编写脚本

  • 函数
  • 脚本
  • 参数

课间作业1

打印所有的连接到shell服务器的学员数,以ip为准

netstat -tnp | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr |wc -l

课间作业2

获取20s内某个进程的每秒内存百分比占用数据,并算出平均值

for i in $(seq 20); do ps -o %mem -p 20752 | tail -1;sleep 1;done | awk '{t+=$1;print $1,t/NR}'

课间作业3

利用top获取某个进程的cpu和内存,并打印平均值

top -b -d 1 -n 20 -p 19912|grep --line-buffered ^19912 | awk '{cpu+=$9;mem+=$10}{print $9,$10,cpu/NR,mem/NR}'

课间作业3

  • 手工/自动化 完成一段时间的业务操作,然后检查有无内存泄漏,计算出业务操作前后的内存增长对比数据
  • 自动化业务执行 拔高
  • 给出变化曲线 拔高
 for i in $(seq 20) ;do adb shell dumpsys meminfo com.xueqiu.android | grep "Dalvik Heap" | awk '{print $4}';sleep 1;done | gnuplot -e "set terminal dumb;plot '<cat' using 1 with line"

课后作业

  • 打印ps和top命令的帮助man帮助文档并通读一遍
  • 统计Linux上的某个进程的cpu增长曲线,贴出代码
  • 统计App上某个业务操作期间内存增长情况,贴出代码
  • 自动化业务执行 拔高
  • 给出变化曲线 拔高