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
輸出結果說明
第一列(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字節,以報告模式輸出,檢查百度的連通性
性能分析工具
top
通過top命令查看系統的CPU、內存、運行時間、交換分區、執行的線程等信息。可以有效的發現系統的缺陷出在哪里,是內存不夠、CPU處理能力不夠還是IO讀寫問題等。
root@master1:~# top
輸出結果說明
第一行:系統當前時間、系統運行時間、當前登錄用戶數、系統負載(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
或者如下格式化
根據索引查看元素
如查看第一個元素
注意:用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
可能你會想到如下重定向
但是你會發現這樣重定向后源文件為空了,當然這不是我們希望看到的。
現在我們重新將內容寫入文件
root@master1:~# cat ceshi.txt
windowns
linux
c language
python language
go language
hello world
這時你可能又會想到通過臨時文件的方式重定向
當然通過臨時文件的方式可以滿足我們的需求
因為sponge可以在文件寫入前讀取所有輸入,所以通過sponge可以很好的解決我們的需求
linux默認是沒有sponge命令的,首先需要安裝
root@master1:~# apt-get install -y moreutils
上面介紹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"}]
總結
以上是生活随笔為你收集整理的linux c统计进程网络读写,linux网络分析、性能分析、文本格式化、文件读写操作之利器(mtr、top、jq、sponge)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle exp 00006,Ora
- 下一篇: linux修改su的PAM配置文件,li