加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

作为高级Java,你应该了解的Linux知识

发布时间:2019-10-31 11:57:59 所属栏目:建站 来源:小姐姐味道
导读:Linux命令好像还真不少,根本原因就是软件多,也有像ag这样的命令想替代grep,但大多数命令古老而坚挺。不是因为这些软件设计的有多好,原因是一些软件最开始入驻了系统,时间久了,就变成了一种约定,这种习惯改变代价太大,就像把所有键盘的L和F换一下一

/proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。只不过以文件系统的方式为访问系统内核数据的操作提供接口。系统的所有状态都逃不过它的火眼金睛。例如:

  • cat /proc/vmstat 看一下,是不是和vmstat命令的输出很像?
  • cat /proc/meminfo 是不是最全的内存信息
  • cat /proc/slabinfo 这不就是slabtop的信息么
  • cat /proc/devices 已经加载对设备们
  • cat /proc/loadavg load avg原来就躺在这里啊
  • cat /proc/stat 所有的CPU活动信息
  • ls /proc/$pid/fd 静静地躺着lsof的结果

一般排查问题的方法

一般排查问题也是围绕着内存cpu等几个元素去排查。下图是一张大体的排查故障或者性能问题的过程,看图,不多说。

作为高级Java,你应该了解的Linux知识

应用场景举例

下面举例从具体应用场景来说明各种命令的组合应用,此类场景数不胜数,需要个人积累。但强烈建议将sed和awk练的熟练一些。

怎么查看某个Java进程里面占用CPU最高的一个线程具体信息?

  • 获取进程中占用CPU最高的线程,计为n。
  • 使用top top -H -p pid,肉眼观察之
  • 使用ps ps -mo spid,lwp,stime,time,%cpu -p pid
  • 将线程号转化成十六进制printf 0x%x n
  • 使用jstack找到相应进程,打印线程后的100行信息 jstack -l pid| grep spid -A 100

统计每种网络状态的数量

netstat -ant | awk '{print $6}' | sort | uniq -c | sort -n -k 1 -r 首先使用netstat查看列表,使用'awk'截取第六列,使用uniq进行统计,并对统计结果排序。当然,也可以这样。 netstat -ant | awk '{arr[$6]++}END{for(i in arr){print arr[i]" "i }}' | sort -n -k 1 -r 这和“分析apache日志,给出当日访问ip的降序列表”是一样的问题。

怎么查看哪个进程在用swap

首先要了解/proc/$pid/smaps里有我们所需要的各种信息,其中Swap字段即是我们所需要的。只要循环遍历一下即可。

  1. for i in `cd /proc;ls |grep "^[0-9]"|awk ' $0 >100'` ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps ;done |sort -k2nr  
  2. 复制代码 

最后,附上http://www.brendangregg.com/ 的大图一张

作为高级Java,你应该了解的Linux知识

End

软件领域有两种人才,一种是工程型的,一种是研究型的。在Linux领域里,相对于搞内核研究的来说,搞命令行的就属于工程型。工程型也有他自己的苦衷,比如,背诵命令就挺痛苦的,一般来说不太推荐背诵,第一覆盖的面不广,第二记的快忘的也快,浪费脑细胞。牛逼的记法就是用,用时间来冲淡烟云,见微知著,并体验其中的喜悦。爱她并天天抱她上床,真爱才成。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读