linux c统计进程网络读写,linux网络分析、性能分析、文本格式化、文件读写操作之利器(mtr、top、jq、sponge)...

好的工具能够让我们工作更加高效,结合工作中的情况,今天分享下linux下比较好用的几个工具。

网络分析工具

mtr

mtr是网络链路检测判断问题非常好用的工具,集成了tracert和ping这两个命令的功能,动态的输出检测结果。mtr 默认发送icmp数据包进行链路探测,会对链路上的相关节点做持续探测并给出相应的统计信息,mtr 能避免节点波动对测试结果的影响

其中中间线路丢包严重但是目标地址不丢包,可能是因为某些主机路由对icmp协议不做处理或者只分配固定限额的资源处理,所以是正常情况。因为icmp协议请求消耗cpu资源,为了节省开销,cpu只分配固定资源处理icmp请求

root@master1:~# mtr 114.114.114.114

1462f88f42260c3635d2eba290fa991c.png

输出结果说明

第一列(host):节点ip和域名

第二列(Loss%):节点丢包率,通常最后的目标丢包才算是真正的丢包

第三列(Snt):发送数据包的数量

第四列(Last):最后一次的探测延迟值

第五列(Avg):探测延迟的平均值

第六列(Best):探测延迟的最小值,即最优值

第七列(Wrst):探测延迟的最大值,即最差值

第八列(StDev):标准偏差

可选参数说明

-h(--help):提供帮助信息

-v(--version):显示版本

-c(--count):设置ping的数量限制值,达到该值后程序退出

-r(--report):以报告模式输出

-p(--split):将每次追踪的结果分别列出来

-s(--psize):指定ping数据包的大小

-n(--no-dns):不对ip地址做域名解析

-a(--address):设置发送包的ip地址,主机有多个ip时使用

-i(--interval):设置icmp返回之间的间隔,默认是1s

-4:使用ipv4协议

-6:使用ipv6协议

运行时交互式选项

?或h:显示帮助菜单

d:切换显示模式

n:启用或禁用dns域名解析

u:切换使用icpm或udp数据包进行探测

eg:

设置ping的数量为20,包大小为1024字节,以报告模式输出,检查百度的连通性

776154930f465f14047f589a09e76860.png

性能分析工具

top

通过top命令查看系统的CPU、内存、运行时间、交换分区、执行的线程等信息。可以有效的发现系统的缺陷出在哪里,是内存不够、CPU处理能力不够还是IO读写问题等。

root@master1:~# top

b783bbbe8a6eaed0abdb43c4d526a300.png

输出结果说明

第一行:系统当前时间、系统运行时间、当前登录用户数、系统负载(1分钟、5分钟、15分钟的平均值)

第二行:tasks为任务进程,total进程总数,ruuning正在运行的进程数,sleeping睡眠的进程数,stopped停止运行的进程数,zombie僵尸进程数

第三行:cpu使用情况,us(user)用户空间占用cpu时间百分比,sy(system)内核空间占用cpu时间百分比,ni(nice)运行低优先级进程的cpu时间百分比,id(idle)空闲cpu时间百分比,wa(iowait)等待io占用cpu时间百分比,hi(hard interrupt)硬件硬中断占用cpu百分比,si(soft interrupt)软件软中断占用cpu百分比,st(steal)当前系统运行在虚拟机中的时候,被其他虚拟机占用的cpu时间百分比

整体的cpu使用率=1-id。当us很高时,证明cpu时间主要消耗在用户代码,需要优化用户代码。sy很高时,说明cpu时间都消耗在内核,要么是频繁的系统调用,要么是频繁的cpu切换(进程切换/线程切换)。wa很高时,说明有进程在进程频繁的IO操作,有可能是磁盘IO,也有可能是网络IO。si很高时,说明cpu时间消耗在处理软中断,网络收发包会触发系统软中断,所以大量的网络小包会导致软中断的频繁触发,典型的SYN Floor会导致si很高。

第四行:内存使用情况,total物理内存总大小,free空闲内存总量,used已经使用的内存量,buff表示用于读写磁盘缓存的内存,cache表示用于读写文件缓存的内存。avail表示可用的内存大小

第五行:虚拟内存信息, total表示能用的swap总量,swap free表示剩余,used表示已经使用的。

swap原理是把一块磁盘空间或者一个本地文件当成内存来使用,称为交换分区

第六行:具体的每个进程状态,PID进程id,USER进程所有者的用户名,PR进程调度优先级,NI进程nice值(优先级),越小的值代表越高的优先级,VIRT进程使用的虚拟内存,RES进程使用的物理内存(不包括共享内存),SHR 进程使用的共享内存大小,S进程状态(D:不可中断的睡眠状态,R:运行,S:睡眠,T:跟踪/停止,Z:僵尸进程),%CPU 进程使用的cpu占用百分比,%MEM 进程使用的内存占用百分比,TIME+ 进程启动后到现在所用的全部cpu时间,COMMAND 进程的启动命令(默认只显示二进制,-c参数能够显示命令行和启动参数)

可选参数说明

-b 批处理模式操作

-d 指定每两次屏幕信息刷新之间的时间间隔

-p 通过指定监控进程ID来仅仅监控某个进程的状态

-q 使top没有任何延迟的进行刷新,如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行

-S 指定累积模式

-s 使top命令在安全模式中运行,这将去除交互命令所带来的潜在危险。

-i 使top不显示任何闲置或者僵死进程

-c 显示整个命令行而不只是显示命令名

运行时交互式选项

h或者? 显示快捷键帮助

q 退出程序

1 展开多核cpu显示

m 切换显示内存信息

M 根据内存使用大小排序

P 根据CPU使用率进行排序(默认排序)

c 切换显示命令名称和完整命令行

k 终止一个进程

i 忽略闲置和僵死进程

r 重新安排一个进程的优先级别,系统提示用户输入需要改变的进程PID以及需要设置的进程优先级

S 切换到累计模式

s 更改刷新间隔时间,单位秒,默认是5s

f或者F 从当前显示中添加或者删除项目

o或者O 改变显示项目的顺序

l切换显示平均负载和启动时间信息

t 切换显示进程和CPU状态信息

T 根据时间/累计时间进行排序

w 将当前设置写入~/.toprc文件中

格式化工具

jq

jq可以对json数据进行分片、过滤、映射和转换,可以让linux命令和shell脚本在处理json数据时变得得心应手。

默认linux系统是不带jq命令的,首先需要安装

root@master1:~# apt-get install -y jq

有如下json格式的文件

root@master1:~# cat test.txt

[{"address":{"province":"hubei","city":"wuhan"},"site":"www.hubei.com"},{"address":{"province":"hunan","city":"changsha"},"site":"www.hunan.com"},{"address":{"province":"zhejiang","city":"hangzhou"},"site":"www.zhejiang.com"}]

现在格式化输出test.txt

02aef61ce03b4c4aa4531e105702fc9a.png

或者如下格式化

186e26ef51a2d1e273fd01801daa08b2.png

根据索引查看元素

如查看第一个元素

53a140ecee96a8d2e5f85a8fbe543821.png

注意:用jq处理的文件必须首先是符合json格式的,否则用jq格式化会报错,jq格式化不会改变原文件排版格式

文件操作工具

sponge

sponge是一个修改文件比较好用的工具,支持在文件写入前读取所有输入,所以在读取文件后再次向同一文件写入时比较有用

例如有如下文件

root@master1:~# cat ceshi.txt

windowns

linux

c language

python language

go language

hello world

现在我们需要将该文件按照首字母顺序排列后重新保存到该文件

root@master1:~# sort ceshi.txt

c language

go language

hello world

linux

python language

windowns

可能你会想到如下重定向

d6a846ce291a31c88d52e5dc89fa6ef9.png

但是你会发现这样重定向后源文件为空了,当然这不是我们希望看到的。

现在我们重新将内容写入文件

root@master1:~# cat ceshi.txt

windowns

linux

c language

python language

go language

hello world

这时你可能又会想到通过临时文件的方式重定向

01a564edc5ca5e2c57152d1dfd5d8f03.png

当然通过临时文件的方式可以满足我们的需求

因为sponge可以在文件写入前读取所有输入,所以通过sponge可以很好的解决我们的需求

linux默认是没有sponge命令的,首先需要安装

root@master1:~# apt-get install -y moreutils

8711d4d1355c0924e5edd39c53175a8f.png

上面介绍jq工具时,我们格式化输出了test.txt,但是test.txt文件本身没有改变,所以现在我们可以将jq和sponge结合使用格式化文件test.txt

root@master1:~# cat test.txt

[{"address":{"province":"hubei","city":"wuhan"},"site":"www.hubei.com"},{"address":{"province":"hunan","city":"changsha"},"site":"www.hunan.com"},{"address":{"province":"zhejiang","city":"hangzhou"},"site":"www.zhejiang.com"}]

5593f7eb48ff5197e6cfe060f1faa381.png

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

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

相关文章

C++入门经典-例2.13-左移运算

1&#xff1a;代码如下&#xff1a; // 2.13.cpp : 定义控制台应用程序的入口点。 //#include "stdafx.h" #include<iostream> using namespace std; void main() {int a0x40,b;ba<<1;//左移1位cout << b << endl;//以十进制输出 } View Cod…

jwebsocket传图片_Java中带有JWebSocket的WebServerSocket

jwebsocket传图片首先&#xff0c;转到http://jwebsocket.org/下载2个软件包Server and Client。 如果要查看源代码&#xff0c;请下载源代码包。 服务器 解压缩服务器程序包。 转到“ conf”文件夹 选择“ jWebSocket.xml”文件打开 编辑“ jWebSocket.xml”文件&#xff…

linux xargs命令,xargs 命令教程

xargs是 Unix 系统的一个很有用的命令&#xff0c;但是常常被忽视&#xff0c;很多人不了解它的用法。本文介绍如何使用这个命令。一、标准输入与管道命令Unix 命令都带有参数&#xff0c;有些命令可以接受"标准输入"(stdin)作为参数。$ cat /etc/passwd | grep root…

java 职责链模式_Java中的责任链模式

java 职责链模式当应有几个处理器来执行某项操作并为这些处理器定义特定顺序时&#xff0c;就需要采用责任链设计模式。 在运行时处理器顺序的可变性也很重要。模式的UML表示如下&#xff1a; 处理程序定义处理器对象的一般结构。 这里的“ HandleRequest”是抽象处理器方法。 …

ArcMap 导入Excel坐标数据

1 准备Excel坐标数据集合 2 ArcMap加入Excel数据 将excel文件放入arcmap工作区的物理路径下在工作区的根图层上点键&#xff0c;选择添加数据&#xff0c;找到excel文件并选择相应的工作薄完成后&#xff0c;excel工作薄即导入工作区左边的图层下。3 ArcMap加入图层文件 在S…

linux6如何分区,CentOS6.9安装 硬盘分区方案与分区步骤

Linux默认可分为3个分区&#xff0c;分别是boot分区、swap分区和根分区&#xff1a;1、swap&#xff1a;交换分区&#xff0c;实现虚拟内存&#xff0c;建议大小是物理内存的1~2倍。2、/boot&#xff1a;用来存放与系统启动有关的程序&#xff0c;比如启动引导装载程序等&#…

实施自定义JMeter采样器

随着我们采用不同的体系结构和实现方式&#xff0c;对通用压力测试工具的需求不断增长。 Apache Jmeter是进行负载测试时最著名的工具之一。 它支持许多协议&#xff0c;例如ftp http tcp&#xff0c;并且可以轻松地用于分布式测试。 Jmeter还为您提供了一种创建自定义采样器…

linux grep命令 例子,14个grep命令使用例子

所有的类linux系统都会提供一个名为grep(global regular expression print&#xff0c;全局正则表达式输出)的搜索工具。grep命令在对一个或多个文件的内容进行基于模式的搜索的情况下是非常有用的。模式可以是单个字符、多个字符、单个单词、或者是一个句子。当命令匹配到执行…

session cookie

http://www.cnblogs.com/andy-zhou/p/5360107.html&#xff08;牛逼网址&#xff09; http://www.cnblogs.com/shiyangxt/archive/2008/10/07/1305506.html&#xff08;同款牛逼&#xff09; cookie: session: Session是另一种记录客户状态的机制&#xff0c;不同的是Cookie保存…

C语言程序设计二期末考试,9第二学期期末考试《C语言程序设计》A

期末试题 二级c语言………………………………装………………………………订…………………………………线………………………………安徽工业大学题纸(一)2009~2010学年第一学期期末考试《C程序设计(2)》试卷 A考试时间&#xff1a;120分钟满分&#xff1a;100分(作题答案一律写…

8个超震撼的HTML5和纯CSS3动画源码

HTML5和CSS3之所以强大&#xff0c;不仅因为现在大量的浏览器的支持&#xff0c;更是因为它们已经越来越能满足现代开发的需要。Flash在几年之后肯定会消亡&#xff0c;那么HTML5和CSS3将会替代Flash。今天我们要给大家分享8个最新的HTML5和纯CSS3动画及其源码&#xff0c;这些…

vim选中字符复制/剪切/粘贴

问题描述&#xff1a; vim 中选中指定字符&#xff0c;进行复制/剪切/粘贴 问题解决&#xff1a; 进入vim中visual模式&#xff0c;visual模式进入&#xff0c;可以有三种方式&#xff1a; &#xff08;1&#xff09;在普通模式&#xff08;normal&#xff09;下&#xf…

使用JavaFX构建反应系统

JavaFX是用于在Java中构建图形应用程序的新标准库&#xff0c;但是许多程序员仍然对Swing甚至&#xff08;高音&#xff09;AWT感到困惑。 在Java诞生20年来&#xff0c;发生了很多事情。 两年前&#xff0c;当我开始研究Speedment UI的JavaFX库时&#xff0c;发现很多东西很着…

阿里巴巴android图标素材网,阿里巴巴矢量图标库

网站简介&#xff1a;IconFont:阿里巴巴矢量图标库是由阿里巴巴体验团队倾力打造的中国第一个最大且功能最全的矢量图标库&#xff0c;提供矢量图标下载、在线存储、格式转换等功能&#xff0c;是设计师和前端开发的便捷工具。IconFont平台是由阿里巴巴UX部门推出的矢量图标管理…

android短信增加条目,Android仿短信条目右上角的红色小圆球提示气泡

可以重写View的onDraw完成该功能&#xff0c;也可以写布局文件完成该功能。现在使用布局文件完成。暂时先简单写一个TextView右上角的提示小红球&#xff0c;也可以根据需要写一个ImageView右上角的小红球提示。android:layout_width"match_parent"android:layout_he…

AccuREST Stub Runner发布

最近发布时间不错&#xff01; 我在Too Much Coding博客上的博客更多是关于发布&#xff0c;然后是关于任何具体主题;&#xff09; 在作为Brixton RC1的一部分发布Spring Cloud Sleuth之后&#xff0c;我们刚刚发布了AccuREST 1.0.4版本。 我们修复了一些错误&#xff0c;但引…

idea使用码云

每更改项目的内容会弹出框提示你是否需要发送码云更新 如果没选yes后想要更新码云 联合开发 发现回到A同事的项目中&#xff0c;Student.java并没有修改 完成后&#xff0c;发现的Student.java已经更新了&#xff0c;跟B同事的代码也是一样。因为从服务器下载了最新的代码。 …

android webview rem,Android部分webview rem计算误差记录

上周做了一个原生H5小游戏页面&#xff0c;使用rem来布局&#xff0c;然后在三星和华为的部分机型里面出现了rem计算出现误差的情况&#xff0c;截图如下在页面rem计算完成后&#xff0c;用两种方式获取font-size。然后结果不一样&#xff0c;导致某些元素通过rem计算后的值&am…

mvvm 耗时加载进度条_ZK的实际应用:MVVM –加载和渲染数据

mvvm 耗时加载进度条先前的文章简要介绍了RIA框架ZK&#xff0c;以及其CSS Selector启发的控制器机制如何通过使在控制器类中引用UI组件的任务变得相对灵活来减轻UI更改所带来的一些负担。 然后&#xff0c;我们在上一篇文章中探讨了ZK中的MVVM模式如何允许单个ViewModel提供不…

ejb jsf jpa_完整的WebApplication JSF EJB JPA JAAS –第2部分

ejb jsf jpa视图–创建和JSF设置 本教程是第1部分的继续。 让我们创建一个新的Dynamic Web Project 。 如下图所示创建它&#xff1a; 请注意&#xff1a;在某些时候&#xff0c;Eclipse会询问您是否要添加JSF功能&#xff08;自动完成&#xff09;&#xff0c;然后启用它。 …