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"