linux 查看cpu_作为高级Java,你应该了解的Linux知识

作为一个javaer,我以前写过很多关于Linux的文章。但经过多年的观察,发现其实对于大部分人,有些东西压根就用不着。用的最多的,就是到线上排查个问题而已,这让人很是苦恼。那么,我们就将范围再缩小一下。

最有用系列:
《 Linux上,最常用的一批命令解析(10年精选)》

202c06364cf3f50d72f165cd06a210d1.png

《Linux生产环境上,最常用的一套“vim“技巧》
《Linux生产环境上,最常用的一套“Sed“技巧》
《Linux生产环境上,最常用的一套“AWK“技巧》
《"Sed" 高级功能:我这小脑瓜都快绕晕了》

Linux命令好像还真不少,根本原因就是软件多,也有像ag这样的命令想替代grep,但大多数命令古老而坚挺。不是因为这些软件设计的有多好,原因是一些软件最开始入驻了系统,时间久了,就变成了一种约定,这种习惯改变代价太大,就像把所有键盘的L和F换一下一样。 这片文章假定你已经了解大多数Linux命令,并了解操作系统的基本元素。如果你现在了解的命令还不足10个,下面的内容就不用看了。除了最基本的东西,本文列出一些对你的面试最常见的最能加分的地方,有些组合可能是你没见过的技巧。但本文仅仅是给出一个大致的轮廓和印象,为以后的专题性考察点作一个序。 本文中出现的所有命令,应该熟记并熟练使用。

几种比较典型的Linux系统
首先对目前的Linux版本有个大体的印象,大体分Desktop版和Server版,已经是百花齐放。

  • Ubuntu 最常见的Linux个人发行版,一位有情怀的南非富豪,有了钱你也可以这么做
  • CentOS 最常用Linux服务器发新版,RHEL的开放版本,因版权而生的轮子
  • Arch 滚动升级,海量二进制包,社区活跃,个人最爱
  • Gentoo 安装软件需要从源码开始编译,稳定,但用起来会很痛
  • LFS 从零构建Linux,跟着做一遍,Linux每根毛都看的清清楚楚
  • Kali 专做渗透用的,代表了发行版的一个发展路径,就是领域

首先要了解的概念

  • KISS Keep it Simple and Stupid,据说是哲学
  • 一切皆文件 通常是文件的东西叫文件,进程、磁盘等也被抽象成了文件,比较离谱的管道、设备、socket等,也是文件。这是Linux最重要的组织方式。
  • 管道 | 分隔,前面命令的输出作为后面命令的输入,可以串联多个
  • 重定向
    • < 将文件做为命令的输入
    • > 将命令的输出输出到文件
    • >> 将命令的输出追加到文件
  • SHELL 首先确认你的shell,一般最常用的是bash,也有不少用csh,zsh等的,通过echo $SHELL可以看到当前用户的shell,对应的配置文件也要相应改变。比如.zshrc,.bashrc

四大元素
进入linux,我们首先关注的是四个元素:内存,cpu,存储,网络。Linux提供了足够的命令,让你窥探它的每个角落。接下来的命令都是些最常用的,不管精通不精通,想不起来要打屁股。

d4f17d4dd3d193b4f77ccd13d2b3218e.png

CPU

  • 使用top查看cpu的load,使用shift+p按照cpu排序。需要了解wa,us等都是什么意思
  • 使用uptime查看系统启动时间和load,load是什么意思呢?什么算是系统过载?这是个高频问题,别怪我没告诉你
  • ps命令勃大茎深,除了查进程号外,你还需要知道R、S、D、T、Z、<、N状态位的含义
  • topps很多功能是相通的,比如watch "ps -mo %cpu,%mem,pid,ppid,command ax" 相当于top的进程列表;top -n 1 -bcps -ef的结果相似。
  • 有生就有死,可以用kill杀死进程。对java来说,需要关注kill -9kill -15kill -3的含义,kill的信号太多了,可以用kill -l查看,搞懂大多数信号大有裨益。
  • 如果暂时不想死,可以通过&符号在后台执行,比如tail -f a.log &jobs命令可以查看当前后台的列表,想恢复的话,使用fg回到幕前。这都是终端作业,当你把term关了你的后台命令也会跟着消失,所以想让你的程序继续执行的话,需要nohup命令,此命令需要牢记
  • mpstat 显示了系统中 CPU 的各种统计信
  • 了解cpu亲和性

内存

  • free -m 命令,了解free、used、cached、swap各项的含义
  • cat /proc/meminfo 查看更详细的内存信息 细心的同学可能注意到,CPU和内存的信息,通过top等不同的命令显示的数值是一样的。
  • slabtop 用来显示内核缓存占用情况,比如遍历大量文件造成缓存目录项。曾在生产环境中遇到因执行find /造成dentry_cache耗尽服务器内存。
  • vmstat 命令是我最喜欢也最常用的命令之一,可以以最快的速度了解系统的运行状况。每个参数的意义都要搞懂。
  • swapon、swapoff 开启,关闭交换空间
  • ** sar** 又一统计类轮子,一般用作采样工具

存储

  • 使用df -h查看系统磁盘使用概况
  • lsblk 列出块设备信息
  • du 查看目录或者文件大小

网络

  • rsync 强大的同步工具,可以增量哦
  • netstat 查看Linux中网络系统状态信息,各种
  • ss 它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。
  • curl、wget 模拟请求工具、下载工具。如wget -r http://site 将下载整个站点
  • ab Apache服务器的性能测试工具
  • ifstat 统计网络接口流量状态
  • nslookup 查询域名DNS信息的工具,在内网根据ip查询域名是爽爆了
  • nc 网络工具中的瑞士军刀,不会用真是太可惜了
  • arp 可以显示和修改IP到MAC转换表
  • traceroute 显示数据包到主机间的路径,俗称几跳,跳的越少越快
  • tcpdump 不多说了,去下载wireshark了
  • wall 向当前所有打开的终端上输出信息。使用who命令发现女神正在终端上,可以求爱

网络方面推荐安装体验一下kaliLinux,上面的工具会让你high到极点。
如何组织起来
linux的命令很有意思,除了各种stat来监控状态,也有各种trace来进行深入的跟踪,也有各种top来统计资源消耗者,也有各种ls来查看系统硬件如lsblk、lsusb、lscpi。基本上跟着你的感觉走,就能找到相应的工具,因为约定是系统中最强大的导向。
Linux有个比较另类的目录/proc,承载了每个命令的蹂躏。像sysctl命令,就是修改的/proc/sys目录下的映射项。不信看看find /proc/sys -type f | wc -lsysctl -a| wc -l的结果是不是很像?
/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等几个元素去排查。下图是一张大体的排查故障或者性能问题的过程,看图,不多说。

ad9e3d4fcc5d93fd0a79198a7f556573.png


应用场景举例
下面举例从具体应用场景来说明各种命令的组合应用,此类场景数不胜数,需要个人积累。但强烈建议将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字段即是我们所需要的。只要循环遍历一下即可。

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 

c8d924304f0f6ff921a0d38a705141c3.png

End
软件领域有两种人才,一种是工程型的,一种是研究型的。在Linux领域里,相对于搞内核研究的来说,搞命令行的就属于工程型。工程型也有他自己的苦衷,比如,背诵命令就挺痛苦的,一般来说不太推荐背诵,第一覆盖的面不广,第二记的快忘的也快,浪费脑细胞。牛逼的记法就是用,用时间来冲淡烟云,见微知著,并体验其中的喜悦。爱她并天天抱她上床,真爱才成。
作者:小姐姐味道
链接:https://juejin.im/post/5db69c05f265da4d4434a221
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uva-10305-水题-拓扑排序

uva-10305-水题-拓扑排序 输入n,m,n代表点数,m代表边数(i,j),排序时i在j前面,没出现的点随意排 #include <iostream> #include<stdio.h> #include<math.h> #include<memory.h> using namespace std;const int maxNum 120; int a, b; int map[maxNum][…

layer和3D仿射变换

1、视图的显示基于图层&#xff0c;通过控制图层同样能控制显示效果&#xff0c;获取当前的视图的layer,并为其增加圆角边框。 //设置layer边框的宽度为2view.layer.borderWidth2;//如果需要为layer添加颜色需要转换为CGColor对象view.layer.borderColor[UIColor greenColor].C…

服务器维修质保合同,服务器维护保修合同(标准版本).pdf

服务器维护保修合同甲 方 &#xff1a;乙 方 &#xff1a;。服务器维护保修合同甲 方&#xff1a;住 所&#xff1a;法定代表人&#xff1a;联 系 电 话 &#xff1a; 传 真&#xff1a;联 系 地 址 &#xff1a;邮 政 编 码 &#xff1a;乙 方&#xff1a;住 所&#xff1a;法…

React Native之Android原生通过DeviceEventEmitter发送消息给js

1 问题 Android原生向js发消息,并且可以携带数据 2 实现原理 Android原生可以使用RCTEventEmitter来注册事件,然后这里需要指定事件的名字,然后在js那端进行监听同样事件的名字监听,就可以收到消息得到数据 Android注册关键代码 reactContext.getJSModule(DeviceEventManag…

knex 单表查询_knex.js

软件简介knex.js 是一个查询构建器&#xff0c;用于 PostgreSQL, MySQL 和 SQLite3。它设计灵活&#xff0c;轻便和有趣。特性&#xff1a;例子&#xff1a;var knex require(knex)({dialect: sqlite3,connection: {filename: ./data.db}});// Create a tableknex.schema.crea…

IOS-网络(大文件下载)

一、不合理方式 1 //2 // ViewController.m3 // IOS_0131_大文件下载4 //5 // Created by ma c on 16/1/31.6 // Copyright © 2016年 博文科技. All rights reserved.7 //8 9 #import "ViewController.h" 10 11 interface ViewController ()<NSURLConne…

地理素养的核心构成和主要特点

素养教育已成为21世纪国际教育发展的重大课题和紧迫任务。新一轮地理课程改革把地理素养置于地理课程目标的核心地位。因此,统一认识和准确把握地理素养的内涵与特质,对于促进学生的全面发展具有十分重要的意义。 一、地理素养的内涵与组成 地理素养是指学习者经过地理学习后…

【开题报告】基于SpringBoot的电子二手产品交易平台的设计与实现

1.研究背景 随着互联网的快速发展和普及&#xff0c;电子商务行业蓬勃发展&#xff0c;二手产品交易作为电子商务领域的一个重要分支也得到了广泛关注。传统的线下二手交易存在一些问题&#xff0c;例如信息不对称、交易风险高、交易流程繁琐等&#xff0c;这些问题限制了用户…

Blazor University (9)组件 — 代码生成 HTML 属性

原文链接&#xff1a;https://blazor-university.com/components/code-generated-html-attributes/代码生成 HTML 属性Razor 在条件 HTML 输出或在 for 循环中输出 HTML 时非常棒&#xff0c;但在元素本身内的条件代码方面&#xff0c;事情就有点棘手了。例如&#xff0c;以下代…

python重定向_在Python中使用urlopen()防止“隐藏”重定向

我正在使用BeautifulSoup进行网页抓取,并且在使用urlopen时遇到特定类型网站的问题.网站上的每个商品都有其独特的页面,并且商品具有不同的格式(例如&#xff1a;500 mL,1L,2L等). 当我使用Internet浏览器打开产品的URL(www.example.com/product1)时,会看到500 mL格式的图片,有…

CentOS安装JAVA JDK

普通情况下&#xff0c;我们都要将linux自带的OPENJDK卸载掉。然后安装SUN的JDK。首先查看Linux自带的JDK是否已安装。 输入例如以下命令&#xff0c;查看已经安装的JAVA版本号信息。 Linux代码 java -version 输入例如以下命令。查看JDK的信息。Linux代码 rpm -qa|grep j…

Android之解决Android8.0手机(Notification)收不到自定义消息通知以及其它手机得到数据不同步

1 问题 app,自定义消息通知的时候,在Android8.0手机上收不到通知 2 解决办法 NotificationManager需要创建NotificationChannel,然后调用createNotificationChannel把NotificationChannel传递进去,并且通过setChannelId设置相应的id 3 普通样本代码实现 private static fina…

世界史

评价华盛顿&#xff1a;打破一个旧世界需要勇气与胆魄&#xff0c;建设一个新世界却需要耐心与智慧。

安装bigdesk后es无法启动_安装天正后,探索者无法双击启动?

用户经常会出现&#xff0c;安装天正后&#xff0c;探索者无法双击启动&#xff0c;或者是图纸无法拖拽入CAD中&#xff0c;如何解决&#xff1f;答&#xff1a;天正安装完成后&#xff0c;默认将CAD的acad.exe程序&#xff0c;添加了“以管理员身份运行此程序”而导致的&#…

服务器安全维护包含,服务器安全维护包含

服务器安全维护包含 内容精选换一换本章节介绍如何使用管理控制台向导创建裸金属服务器。创建裸金属服务器时&#xff0c;您需要配置规格、镜像、存储、网络、安全组等必备信息。同时&#xff0c;向导也提供了丰富的扩展配置功能&#xff0c;方便您进行个性化部署和管理。在创建…

VS2008系统开发背景图片的添加及注意事项

最初的做法是&#xff0c;直接将父窗体的Image属性改成背景图片&#xff0c;并将其BackgroundImageLayout属性设置为stretch&#xff0c;结果发现这样做的结果是系统运行超级慢&#xff0c;便考虑用代码实现&#xff0c;如下&#xff1a; //this.BackgroundImage System.Draw…

JavaScript中的的面向对象中的一些知识

JavaScript中的的面向对象中的一些知识 function Cat(name,age){return {name:name,age:age }}//构造函数function Dog(name,age){this.namename;this.ageage; }function show(){var c1new Cat("cat1",18);var c2new Cat("cat2",19);//Javascript还提…

C# 发出异步的Get请求

下列的下载代码示例是 HttpClientSample。它以不同的方式异步调用Web 服务。为了演示本例使用的不同方法&#xff0c;使用了命令行参数。示例代码使用了以下名称空间&#xff1a;System System.Linq System.Net System.Net.Http System.Net.Http.Headers System.Threading Sy…

python用pandas读取excel_Python使用pandas读取Excel文件数据和预处理小案例

假设有Excel文件data.xlsx&#xff0c;其中内容为 现在需要将这个Excel文件中的数据读入pandas&#xff0c;并且在后续的处理中不关心ID列&#xff0c;还需要把sex列的female替换为1&#xff0c;把sex列的male替换为0。本文演示有关的几个操作。 &#xff08;1&#xff09;导入…

shader 3 rendering path

渲染通道&#xff0c; rendering path。 vertexlit&#xff0c; forward 和 Deferred lighting 旧有的非统一架构下&#xff1a; 分为顶点着色引擎和像素渲染通道 渲染通道是GPU负责给图像配色的专门通道&#xff1b; 越多&#xff0c;填充效率越高&#xff0c;流畅性越好。 ht…