linux常用命令

  • tcpdump
    • 文件操作
    • 分析信息详情
  • lsof
    • 获得网络信息
  • LINUX 系统高级工具
    • pstack
    • strace
    • proc文件系统
  • 日志监控工具
    • tail
    • multitail
  • 性能监控
    • pmap
    • nmon性能监控
    • glances系统监控
    • w -h
  • 性能测试
    • 接口测试
      • 发包工具
        • postman
        • curl
        • fiddler
        • Charles
        • wireshark
        • lyrebird
      • 数据库测试
        • Navicat
        • Rdm
      • 压力测试工具
        • sysbench
        • mysqlslap(mysql自带)
      • SQL注入工具
    • 异常测试
      • tc
      • Clumsy
    • 压力测试
    • 安全性测试
    • 性能测试 sysbench
    • iperf 测试服务器带宽
  • linux性能分析
    • Cpu 利用率
      • 运行队列
      • 负载
      • 上下文切换
      • 中断
      • 遇到CPU利用率高该如何排查
      • 根据指标查找工具
      • 如何迅速分析CPU性能瓶颈

tcpdump

tcpdump -i any -c 10 host www.baidu.com and port 80
同时在另一个终端curl www.baidu.comType:设置数字或名称所指示类型
host port
net 设置子网 net 192.168.0.0 mask  等价于192.168.0.0/24
portrange 设置端口范围 例如 portrange 6000-8000Dir:设置网络出入方向
srt dst src or dst src and dst
ra ta addr1 addr2 addr3 addr4 (仅对IEEE 802.11 Wireless Lan 有效)Proto:指定协议类型
ethr fddi tr wlan ip ip6 arp tcp udp

文件操作

-w 输出结果至文件
-C 限制输入文件大小,超出以后缀1等数字方式递增,注意单位是1,000,000字节
-W 指定输出文件的最大数量,到达后重新写新文件
-G 指定每N秒就重新输出至新文件,注意-w参数应基于strfttime参数指定文件名
-r 读取一个抓包文件
-V 将待读取的N个文件写入文件,通过读取该文件同时读取多个文件例:
tcpdump -c 2 -w a 保存两个包到文件a
tcpdump -r a 读取a文件显示
tcpdump -c 2 -w b
vim c 逐行写入a b
tcpdump -V c 读取多个文件
tcpdump -C 1 -W 3 abc 限制文件大小1,000,000字节,输出文件最大数量为3
tcpdump -G 3 -w def%M-%S
strftime参考:
%a 星期几简写
%A 星期几全称
%b 月份
%B
%c 标准的日期时间串
%C 年份的后两位数字
%d 十进制每月第几天
%D 月/天/年
%M 十进制表示的分钟数
%S 十进制表示的秒数
......
-t
-tt
-ttt
-tttt
-ttttt

分析信息详情

-e 显示数据链路层头部
-q 不显示传输层信息
-v 显示⽹络层头部更多的信息,如TTL、id等
-n 显示IP地址、数字端⼝代替hostname等
-S TCP信息以绝对序列号代替相对序列号
-A 以ASCII⽅式显示报⽂内容,适⽤HTTP分析
-x 以16进制⽅式显示报⽂内容,不显示数据链路层
-xx 以16进制⽅式显示报⽂内容,显示数据链路层
-X 同时以16进制及ASCII⽅式显示报⽂内容,不显示数据链路层
-XX 同时以16进制及ASCII⽅式显示报⽂内容,显示数据链路层
例子
sudo tcpdump -r a -e
sudo tcpdump -r a -q
sudo tcpdump -r a -v
输出时间格式

lsof

默认:没有选项,lsof列出活跃进程的所有打开文件
组合:可以将选项组合到一起
- a:结果进行‘与’运算
- l:在输出显示用户ID而不是用户名
- h:获得帮助
- t:仅获得进程ID
- U:获得Unix套接口地址
- F:格式化输出结果,用于其他命令

获得网络信息

显示端口被某个程序占用
lsof -i:port
查看进程打开了哪些文件
lsof -p PID
显示进程abc打开的文件,可以使用less分页,b向后,d向前(半页)
lsof -c abc
显示打开文件1.txt的进程
lsof 1.txt

LINUX 系统高级工具

pstack

pstack命令用来显示每个进程的调用栈。可以使用pstack来查看进程正在挂起的执行方法,也可以用来查
看进程的本地线程堆栈
pstack PID

strace

系统调用工具,是Linux系统下的一款程序调试工具,用来监控一个应用程序所使用的 系统调用,通过它
可以跟踪系统调用,让你熟悉一个Linux程序在背后是怎么运作的。 适用于想研究Linux底层的工作机制的场景
-c 统计每一系统调用的所执行的时间,次数和出错次数等
-d 输出strace 关于标准错误的调试信息
-f 跟踪由fork嗲用所产生的子进程
-ff 如果提供-o filename 则所有进程的跟踪结果输出到相应的filename.pid中
-F 尝试跟踪vfork调用,在-f时,vfork不被跟踪
...等等
实时查看进程
strace -p 25901
strace -c -p 25901

proc文件系统

cpu信息
cat /proc/cpuinfo
内存信息
cat /proc/meminfo
内存映射信息
cat /proc/zoneinfo
磁盘映射信息
cat /proc/mounts
系统平均负载均衡命令
cat /proc/loadavg

日志监控工具

tail

实时日志上打印颜色,给每个状态上不同颜色,INFO绿色 WARN黄色,ERROR红色
tail -f /data/rtc/room_server/log/roll.log | perl -pe
's/(INFO)/\e[0;32m$1\e[0m/g,s/(WARN)/\e[0;33m$1\e[0m/g,s/(ERROR)/\e[1;31m$1\e[0m/g'

multitail

可同时开启多视窗看log,适合用在看部署在很多机器上的项目的log -cS [color_scheme] : 可以选择输
出的log的颜色,推荐使用goldengate,也可自定义(修改/etc/multitail.conf)

性能监控

pmap

pmap [options] PID
Pmap 提供了进程的内存映射,pmap命令用于显示一个或多个进程的内存状态。其报告进程的地址空间和
内存状态信息。Pmap实际上是一个Sun OS上的命令,linux仅支持其有限的功能。但是它还是对查看完整
的进程地址空间很有帮助。我们需要PID或者运行的进程的唯一进程ID来查看进程内存状态,我们可以通
过/proc或者常规命令比如top或ps得到它。
-X 更详细的输出
![在这里插入图片描述](https://img-blog.csdnimg.cn/b31cb648f37c402486641f720b505266.png#pic_center)[ anon ] 磁盘上没有对应文件,一般都是可执行文件或者动态库里的bss段接下来8个字段的含义分别如下:
1. Size:表示该映射区域在虚拟内存空间中的大小。
2. Rss:表示该映射区域当前在物理内存中占用了多少空间。
3. Shared_Clean:和其他进程共享的未被改写的page的大小。
4. Shared_Dirty: 和其他进程共享的被改写的page的大小。
5. Private_Clean:未被改写的私有页面的大小。
6. Swap:表示非mmap内存(也叫anonymous memory,比如malloc动态分配出来的内存)由于物理
内存不足被swap到交换空间的大小。
11 性能监控
pmap57
7. Pss:该虚拟内存区域平摊计算后使用的物理内存大小(有些内存会和其他进程共享,例如mmap进来
的)。比如该区域所映射的物理内存部分同时也被另一个进程映射了,且该部分物理内存的大小为
1000KB,那么该进程分摊其中一半的内存,即Pss=500KB。

nmon性能监控

glances系统监控

w -h

显示谁登录了系统并执行了哪些程序。

性能测试

接口测试

发包工具

postman

 接口请求模拟,用力管理,环境管理,客户端

curl

接口请求模拟;终端

fiddler

windows端抓包客户端

Charles

Mac端转包客户端

wireshark

抓包客户端;网络协议分析器

lyrebird

抓包开源工具,可以二次开发

数据库测试

Navicat

MySQL
SQLServer
Oracle
MongoDB

Rdm

Redis

压力测试工具

sysbench

mysqlslap(mysql自带)

SQL注入工具

异常测试

tc

网络丢包和实验模拟工具

Clumsy

开源网络模拟工具;人工造成不稳定网络状态,适用于Windows

压力测试

jmeter
基于Java的压力测试工具;适用简单的并发测试,性能不稳定
loadrunner
预测系统行为和性能的负载测试工具;使用场景同jmeter,非开源免费
locust
易于使用的分布式负载测试工具
gatling
基于Scala 开发的高性能服务器性能测试工具;适用场景:容量测试
Tsung
开源的多协议分布式负载测试工具
https://github.com/processone/tsung

安全性测试

Scanners Box
安全扫描,包括⼦域名枚举、数据库漏洞扫描、弱口令或信息泄漏扫描、端口扫描、指纹识别以
及其他大型扫描器或模块化扫描器
https://github.com/We5ter/Scanners-Box
MobSF
App包安全扫描;适⽤于Android
https://github.com/MobSF/Mobile-Security-Framework-MobSF
nmap
https://nmap.org/
搜集目标机主机的基本状态信息
Metasploit
开源的安全漏洞检测工具
https://www.metasploit.com/
Burp Suite
用于测试和评估Web应用程序的安全性
https://portswigger.net/burp

性能测试 sysbench

iperf 测试服务器带宽

linux性能分析

在进行服务端性能测试时,需要观察系统对CPU的使用情况,以此作为衡量整个系统性能的重要指标,对
于Linux CPU主要的关注点在利用率,运行队列,负载,上下文切换等,因此了解这些指标的含义和常用
的监控方法对性能测试有很大的帮助。

Cpu 利用率


Linux CPU使用率主要是从以下几个维度进行统计:
%usr:普通进程在用户模下下执行的时间;
%sys:进程在内核模式下的执行时间;
%nice:被提升优先级的进程在用户模式下的执行时间;
%idle:空闲时间。
%iowait:等待I/O完成的时间。
%irp:处理硬中断请求花费的时间。
%soft:处理软中断请求花费的时间。
%steal:是衡量虚拟机CPU的指标,是指分配给本虚拟机的时间片被同一宿主机别的虚拟机占用,一
般%steal值较高时,说明宿主机的资源使用已达到瓶颈。
top
vmstat
mpstat

运行队列

每个CPU或者说每个核都会维持一个运行队列,队列中存放
running和runnable两种状态的进程,CPU会不断的调度队列中的进程运行,因此队列中的进程数越多,
每个进程分别到的时间片就越少,程序的时间也就越长,同时CPU会不断的处于运行状态,性能开销较
大。可以通过观察一定时间内运行队列中的进程数量来判断CPU是否达到的瓶颈,这就有了负载的概念;

负载

依据经验分析,单核CPU负载<2时,
系统性能是良好的,当单核CPU负载>5时,那么就表明这个机器存在严重的性能问题。
负载可以通过top,uptime、cat /proc/loadavg等命令查看1分钟,5分钟,15分钟的负载值:

上下文切换

进程间切换
内核态和用户态
上下文切换存在系统开销,会一定程度上增加%sys的值
引起上下文切换的原因有哪些?
对于抢占式操作系统而言,大体有几种:
1.当前任务的时间片用完之后,系统CPU正常调度下一个任务
2.当前任务碰到IO阻塞,调度线程将挂起此任务,继续下一个任务
3.多个任务抢占锁资源,当前任务没有抢到,被调度器挂起,执行下一个任务
4.用户代码挂起,让出CPU时间
5.硬件终端
vmstat 中的cs为中断数量

中断

中断是指CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程
序,转去执行一段特殊的服务程序(称为中断服务程序或中断处理程序),以处理该事件,该事件处理完后又
返回被中断的程序继续执行。引起中断的原因有以下几点:
1. 提高数据传输率;
2. 避免了CPU不断检测外设状态的过程,提高了CPU的利用率。
3. 实现对特殊事件的实时响应。如多任务系统操作系统中缺页中断、设备中断、各类异常、实时钟等
中断根据中断源的不同可以分为硬中断和软中断:
硬中断: 硬中断又称外部中断,是由硬件产生,如键盘,鼠标,打印机等。每个设备或设备集都有它
自己的中断请求(IRQ),基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上,处理中断的驱
动是需要在CPU上运行的,因此中断产生时,CPU会中断当前正在运行的任务来处理中断,在多核的
操作系统中,一个中断通常只能中断一颗CPU(核)。
软中断: 软中断又称内部中断,由软件系统本身发给操作系统内核的中断信号。通常是由硬中断处理
程序或进程调度程序对操作系统内核的中断,也就是我们常说的系统调用(System Call)。一般情况下
软中断是处理I/O请求时发生订单,这些请求会调用内核中的处理I/O的程序,对于某些设备,I/O请求
需要被立即处理,而磁盘I/O请求通常可以排队并且可以稍后处理。根据I/O模型的不同,进程或许会被
挂起直到I/O完成,此时内核调度器就会选择另一个进程去运行。I/O可以在进程之间产生并且调度过程
通常和磁盘I/O的方式是相同。在I/O密集型系统中可能会出现大量的中断请求,中断会产生中断上下
文,造成CPU开。
可以通过top,vmstat等查看CPU的相关命令中监控中断情况
vmstat中的in为中断数量

遇到CPU利用率高该如何排查

遇到CPU使用率高时,首先确认CPU是消耗在哪一块,如果是内核态占用CPU较高:
1. %iowait 高,这时要重点关注磁盘IO的相关操作,是否存在不合理的写日志操作,数据库操作等;
2. %soft或%cs 高,观察CPU负载是否较高、网卡流量是否较大,可不可以精简数据、代码在是否在多
线程操作上存在不合适的中断操作等;
3. %steal 高,这种情况一般发生在虚拟机上,这时要查看宿主机是否资源超限;
如果是用户态较高,且没有达到预期的性能,说明应⽤程序需要优化。

根据指标查找工具

如何迅速分析CPU性能瓶颈


【linux常用命令】相关推荐

  1. linux常用命令(转载)

    Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错.我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短 ...

  2. linux常用命令汇总

    linux常用命令汇总,以便需要时快速查询 中文释义 相应命令 备注 在文件中查找 grep error catalina.out 在catalina.out文件中查找error信息 重启nginx ...

  3. Linux常用命令大全-toolfk程序员在线工具网

    本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果.Tool ...

  4. LINUX常用命令(基础)

    LINUX常用命令(基础) 收藏LINUX常用命令(基础) 1. man 对你熟悉或不熟悉的命令提供帮助解释eg:man ls 就可以查看ls相关的用法注:按q键或者ctrl+c退出,在linux下可 ...

  5. DOS 和 Linux 常用命令的对比

    此为转载文章,转自:http://www.huihoo.org/gnu_linux/ch-doslinux.html Red Hat Linux 9: Red Hat Linux 入门指南 后退 前进 ...

  6. Linux常用命令(echo、date、ls、cd、history、cat)

    一.linux常用命令有很多今天我们来总结一下常用的入门命令: 1.linux下关机命令:poweroff.init 0.halt.shutdown -h now 2.linux下重启命令:reboo ...

  7. Linux初学者接住了---Linux常用命令

    前言 本文整理了Linux常用命令,分类整理,举例说明使用方法,希望为大家带来便利.命令严格区分大小写,一般是小写,tab键补全. Linux常用命令 前言 一.文件处理命令 1.命令格式 目录处理命 ...

  8. Linux 常用命令笔记

    Linux 常用命令笔记 1. locate locate:用来定位文件的位置,如:locate a.txt 但是这个命令有延迟,也就是新建的文件不一定能搜索到,如果非要找到新建的文件可以使用 upd ...

  9. Linux 常用命令使用方法

    Linux 常用命令使用方法 1.# 表示权限用户(如:root),$ 表示普通用户  开机提示:Login:输入用户名  password:输入口令   用户是系统注册用户成功登陆后,可以进入相应的 ...

  10. linux 命令last -x,Linux常用命令last的使用方法详解

    前言 本文主要给大家介绍了关于Linux常用命令last用法的相关内容,分享出来供大家参考学习,话不多说,来一起看看详细的介绍吧. 命令简介: 该命令用来列出目前与过去登录系统的用户相关信息.指令英文 ...

最新文章

  1. R - 0 or 1 HDU - 4370
  2. AttributeError:module“seaborn” has no attribute “lineplot”
  3. java ajax上传文件图片以json形式返回
  4. pytorch torch.Tensor.new_ones()(返回一个与size大小相同的用1填充的张量。 默认返回的Tensor具有与此张量相同的torch.dtype和torch.device)
  5. VTK:绘图之Diagram
  6. 10tb服务器硬盘 选购,2017最靠谱大容量机械硬盘选购指南(基于Backblaze硬盘寿命可靠性报告)...
  7. string类的相关知识及部分操作
  8. 用户需求分析:背后隐藏的门槛
  9. 桌面支持--WIN7任务栏上EXCEL的图标右键菜单上没有了最近打开的文档目录
  10. 【大数据部落】R语言电商网站爬虫
  11. Django访问静态资源
  12. CATIA二次开发—漫谈开发环境
  13. K-means聚类算法及其各种变形模型的实验分析
  14. adb 连接手机 cannot connect to 192.168.x.xx:5555: 由于目标计算机积极拒绝,无法连接。 (10061)
  15. dfema规则_六步搞定DFMEA表格
  16. 《吴军信息论40讲》学习笔记(完)
  17. GitHub 上有什么好玩又有挑战的前端项目?
  18. 深度学习在计算机视觉领域图像应用总结
  19. MacBook Pro使用初体验之Mac快捷键汇总(持续更新中)
  20. PyQt5学习记录(2)---QMainWindow菜单栏、状态栏和工具栏

热门文章

  1. HTTP权威指南------URL与资源
  2. 如何禁用笔记本电脑触摸板_您如何永久禁用笔记本电脑上的触摸板?
  3. win10下安装多个JDK配置方法
  4. 使用ffmpeg解码音频sdl(push)播放
  5. 侯捷先生的Design Patterns高级课程
  6. 数据库实验六:完整性语言实验
  7. Machine Learning With Spark--读书笔记
  8. c语言 内部12位二进制整型数据 转换 十六进制 程序,C语言应用:将128位二进制数据转换为十六进制输出...
  9. String和对象的转换
  10. js 免费可靠cdn地址(富文本编辑器tinymce的实践)