Linux第二节
一.常见程序错误(tail -f查看错误)
1.内存泄漏oom
Java.lang.OutOfMemory(内存泄露) --->OOM 数据读写,上传文件的服务,下载文件的服务,淘宝发放优惠卷
2.超时
TimeOut,超时 主要指的是客户端不断的向服务端发送请求,服务端这边的资源有限(内存和CPU),那么有可能会出现超时
3.空指针
Java空指针 Java.lang.NullPointException
4.堆栈溢出
java.StackOverExpection 堆栈溢出
a.错误出现场景
1.半夜3点程序奔溃,早上知道了,需要测试反馈给开发,怎么反馈
cat打开日志到那个时间节点,把上下文全部复制给开发,让开发定位
2.如果开发简单改了,自己要怎么验证改的没问题
根据错误日志和开发一起排查可能出现问题的场景,根据开发改完以后,把可能的场景都测试一遍(概率性问题)
二.linux帮助命令
(一)帮助手册
1.man(帮助手册:man ls/man mkdir)
2.info
(二)权限操作(chmod赋予权限)
1.chmod 数字组合修改文件权限
读:r-->4 写:w-->2 执行:x--->1
格式:chmod 数字组合 文件名(注意空格)
九位数三组,第一个—代表文件的意思
2.chmod 使用字母修改权限
格式:chmod a/u/g/o+- r/w/x 文件或者目录名(注意空格)
3.默认权限umask
(三)资源占用
在任务管理器查看:(ctrl+alt+delete)cpu 内存 磁盘空间
1.free查看内存
free -h以兆单位打开
2.top查看负载
uptime 平均负载
1/5/15min
2.1top内容解读
第⼀⾏: 系统时间 + 系统运⾏时间 + ⼏个⽤户 + 1/5/15分钟系统平均负载
第⼆⾏:进程总数(total) + 正在运⾏进程数(running) + 睡眠进程数(sleeping) + 停⽌的进程数(stopped)+ 僵 ⼫进程数(zombie)
第三⾏:⽤户空间CPU占⽐(us) + 内核空间CPU占⽐(sy)+ CPU空置率(id)
-
原装top
注解:
-
运行的任何一个程序叫做进程(PID :进程ID)
-
常见的进程状态 :D=不可中断的睡眠状态; R=运⾏; S=睡眠 ;T=跟踪/停⽌; Z=僵⼫进程
A.top -d 数字 代表几秒钟刷新一次
[top -d 2 :每隔2秒显式所有进程的资源占⽤情况 ]
B.top -p PID
top -p 12345 -p 678a9:每隔5秒显示pid是12345和pid是6789的两个进程的资源占⽤情况
C.top -c :
每隔5秒显式进程的资源占⽤情况,并显示进程的命令⾏参数(默认只有进程名)
[在top的命令⾥⾯,按m是对内存进⾏排序,按p是按cpu进⾏排序]
D.top -p 12345 -p 6789:
每隔5秒显示pid是12345和pid是6789的两个进程的资源占⽤情况
E.top -d 2 -c -p 123456 :
每隔2秒显示pid是12345的进程的资源使⽤情况,并显式该进程启动的命令⾏参数
2.2安装htop/atop进行可视化的查看
安装命令:yum install htop/atop
-
花哨的htop~
-
简洁的atop~
3.nmon(第三方工具)监测Linux各个资源信息
nmon h 是帮助,展示不同字母指令
三.端口查看
(一)lsof
lsof(list open files)是⼀个列出当前系统打开⽂件的⼯具
格式:lsof -i:端⼝
查询mysql被占用的端口
下边的那个是筛选过滤
查询8080被占用
(二)netstat
netstat -tunlp ⽤于显示 tcp,udp 的端⼝和进程等相关情况
格式:netstat -tunlp | grep 端⼝
-t (tcp) 仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化为数字
-l 仅列出在Listen(监听)的服务状态 -
p 显示建⽴相关链接的程序名
-
客户端的过滤:netstat -ano | findstr 80
-
windows的过滤:netstat -ano | findstr 80
netstat -ano | findstr 80:查询端口占用的进程pid 使用进程PID查询那个程序占用 tasklist | findstr "4480"