【linux常用命令】-程序员宅基地

技术标签: 网络  运维  linux  

tcpdump

tcpdump -i any -c 10 host www.baidu.com and port 80
同时在另一个终端curl www.baidu.com

Type:设置数字或名称所指示类型
host port
net 设置子网 net 192.168.0.0 mask  等价于192.168.0.0/24
portrange 设置端口范围 例如 portrange 6000-8000

Dir:设置网络出入方向
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性能瓶颈


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_29619133/article/details/125198814

智能推荐

从本地或者网络读取图片,并转换为Bitmap图片_java 读取网页图像到bitmap-程序员宅基地

文章浏览阅读6.6k次。在做android项目时,我们经常需要从本地或者网络读取图片,并转换为Bitmap图片,以便使用,下面是读取本地图片并转换的方法:Java代码 /** * 得到本地或者网络上的bitmap url - 网络或者本地图片的绝对路径,比如: * * A.网络路径: url="http://blog.foreverlov_java 读取网页图像到bitmap

计算机组成原理|多功能ALU设计实验_设计一个具有8种运算功能的32位alu实验总结-程序员宅基地

文章浏览阅读9.8k次,点赞7次,收藏118次。多功能ALU设计实验一、实验目的与要求实验目的:(1)学习多功能ALU的工作原理,掌握运算器的设计方法(2)掌握运用Verilog HDL 进行行为描述与建模的技巧和方法实验要求:本实验要求设计一个具有8种运算功能的32位ALU,并能够产生运算结果的标志:结果为零标志ZF(Zero Flag)、溢出标志OF(Overflow Flag)。ALU通过3根控制线ALU_OP[2:0]..._设计一个具有8种运算功能的32位alu实验总结

iOS开发进阶之列表加载图片-程序员宅基地

文章浏览阅读484次,点赞10次,收藏5次。列表加载图片通常使用UITableView或UICollectionView,由于列表中内容数量不确定并且对于图片质量要求也不确定,所以对于图片加载的优化是很有必要的。

29、基于51单片机智能消防灭火小车 寻光自动红外壁障车设计_灭火小车设计方案-程序员宅基地

文章浏览阅读1k次,点赞2次,收藏16次。智能作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能小车就是其中的一个体现,本次设计的多功能智能灭火避障小车,以STC89C52单片机作为微控制器,设计出一种可以寻找火源(火源以蜡烛模拟)和自动避开障碍物的小车。通过光敏晶体管传感器检测火源信号当检测到火源,小车自动调整姿态,对准火源。灭火电机启动将蜡烛吹灭实现模拟灭火。通过红外光电开关感应控制小车避障行驶。工作状态实时显示在1602液晶上。_灭火小车设计方案

Ubuntu虚拟机总是死机,然后重启就进不去打不开了怎么办_ubuntu卡死之后重启,打不开了-程序员宅基地

文章浏览阅读4.6k次。从网上搜到的方法都解决不了我的问题,分享一点我自己的实在的解决经验:养成保存快照的习惯,比什么方法都靠谱。 即打开VMWare->虚拟机->快照->拍摄快照,简单填写一下你现在做到的程度,然后点击拍摄快照,存一下,养成习惯,每做出些什么东西了,就存一个快照,哪天莫名其妙又死机了,开机又黑屏进不去了,直接用快照恢复到最近的进度继续做就好。..._ubuntu卡死之后重启,打不开了

随便推点

java logutil_Java日志组件1---Jdk自带Logger(java.util.logging.Logger)-程序员宅基地

文章浏览阅读216次。最近在看日志的一些东西,发现利用JDK自带的log也可以简单的实现日志的输出,将日志写入文件的过程记录如下:1、新建LogUtil.Java(里面写了几个静态方法,为log设置等级、添加log控制台handler、添加log文件输出handler)packagecn.darkranger.log.logger;importjava.io.IOException;importjava.text.S..._logutil.java

此时不应有 \scala\bin\..\lib\jline-2.14.5.jar_c:\users\dell>scala 此时不应有 \scala\bin\..\lib\jline--程序员宅基地

文章浏览阅读221次。scala安装时,此时不应有 \scala\bin…\lib\jline-2.14.5.jar那是因为安装Scala时,默认安装到Program Files (x86)或者Program Files下,但是这俩个文件夹命名存在空格,这是从新安装,选择没有空格存在的文件夹下面即可。谢谢..._c:\users\dell>scala 此时不应有 \scala\bin\..\lib\jline-2.14.5.jar

本地搭建docker仓库的详细步骤_本地安装docker-程序员宅基地

文章浏览阅读1.7k次。在本地创建一个用于存储Docker镜像的目录,比如 /data/docker-registry。如果需要加速拉取公共镜像,可以配置阿里云或DaoCloud等国内提供的Docker镜像加速器。如果需要在其他机器上访问该私有仓库,则需要配置证书。使用docker tag将本地构建好的镜像打标签,并推送到私有仓库中。在官网下载Docker安装包进行安装,具体操作方式可以参考官方文档。至此,本地Docker仓库搭建完成。配置客户端访问证书(可选)拉取Registry镜像。启动Registry容器。_本地安装docker

Docker 停止容器_docker停止运行中的容器-程序员宅基地

文章浏览阅读2w次。使用docker stop停止一个容器docker stop可以用来终止一个正在运行的容器。它的命令格式如下:docker stop [OPTIONS] Container [Container …]其中:docker stop: Docker停止容器的命令关键词;OPTIONS:命令选项,其中-t指定等待多少秒后如果容器还没终止,就强行停止,默认等待10秒;Container:需要启动的容器,该容器用“容器ID”或“容器名”表示,如果指定了多个容器,那么就将这些容器都启动。例如想要停止一个名_docker停止运行中的容器

3DMax主要应用在游戏公司,和建筑动画方面有很多优点如下_游戏建模中哪些东西可以用到公司-程序员宅基地

文章浏览阅读488次。ZBrush、Maya和3dmax的区别?我们知道,做三维设计、建模的软件有很多,最常见的有3DMAX、Maya和ZBrush, 那这几款软件之间有什么区别呢?ZBrush、Maya和3dmax的区别。zbrush首先,我们先来说3DMax和Maya这两款软件。 3DMax和Maya都属于三维制作软件,两者的很多功能基本相同,但是操作上的差异很大。功能上来说,两款软件都可以制作出3D模型,效果图,动画,影视。但是效果,制作方便程度上确实有差别。也不能做那个好那个不好,因为两款软件的定位目标不一样_游戏建模中哪些东西可以用到公司

Java项目:电影售票系统设计和实现(java+Springboot+ssm+mysql+jsp+maven)_基于spring boot电影购票系统-程序员宅基地

文章浏览阅读1.5k次,点赞4次,收藏9次。源码获取:博客首页 "资源" 里下载!一、项目简述Java电影院系统功能:登陆注册模块 :普通用户可以直接访问影院主界面进行电影浏览、查询等 功能,但是当用户操作需要读取用户信息时就要求用户进 行登录了。普通用户可以直接访问登录页面或者通过页面 的登录选项进行登录,当用户不拥有账号时,即可通过注 册链接进行账号注册,注册完毕后自动返回登录页面,方 便用户登录。电影查询浏览模块 :电影浏览查询模块作为本系统最重要的模块之一,面向普 通用户。其意指通过不同方式向用户展示电影并提供电影._基于spring boot电影购票系统