linux常用工具命令
linux常用工具命令
@(LINUX)[linux]
- linux常用工具命令
- 一dmidecode
- 1硬件平臺
- 2內存
- 3cpu
- 二1sar
- 三iostat
- 1iostat -xk 1
- 四vmstat
- 1 vmstat -S M 5
- 五proc
- 1查看CPU信息
- 六mtr
- 七iperf檢查2臺機器間的網絡帶寬
- 八tcpdump檢查數據包的傳輸情況
- 九nslookup
- 十traceroute
- 十一strace
- 一dmidecode
(一)dmidecode
1、硬件平臺
dmidecode | grep -5 "Product"System InformationManufacturer: IBMProduct Name: BladeCenter HS22 -[7870RR5]-Version: 07Serial Number: 99T8221UUID: 945421FC-6D31-11E0-8BAF-5CF3FC215704Wake-up Type: OtherSKU Number: XxXxXxXFamily: System xBase Board InformationManufacturer: IBMProduct Name: 68Y8163Version: (none)Serial Number: 1423X5Asset Tag: (none)Features:Board is a hosting board可以看出,這是IBM的BladeCenter HS22機器。
2、內存
dmidecode -t memory查看內存的硬件信息
3、cpu
dmidecode -t coprocessor其實這些都是dmidecode輸出內容中的一部分布局,完整列表如下:
Valid type keywords are:biossystembaseboardchassisprocessormemorycacheconnectorslot(二)1、sar
懷疑CPU存在瓶頸,可用 sar -u 和 sar -q 等來查看
懷疑內存存在瓶頸,可用 sar -B、sar -r 和 sar -W 等來查看
懷疑I/O存在瓶頸,可用 sar -b、sar -u 和 sar -d 等來查看
懷疑網絡存在瓶頸,可用sar -n DEV來查看
還可以查看一周內的情況,如:
sar -u -f /var/log/sysstat/sa27注意是sa27,不是sar27。
輸出的各項參考:http://www.chinaz.com/server/2013/0401/297942.shtml
(三)iostat
1、iostat -xk 1
(四)vmstat
1、 vmstat -S M 5
$ vmstat -S M 5 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 566 232 239 0 0 65 824 59 39 4 1 93 1 0 0 3 0 366 232 432 0 0 0 25929 2638 2776 14 14 43 28 0 2 1 0 241 232 543 0 0 26 38110 2123 1316 75 11 0 14 0 3 0 0 78 232 543 0 0 0 11784 1558 1028 80 4 16 0 0 0 0 0 189 232 543 0 0 0 142 1052 933 70 3 27 1 0 0 0 0 185 232 543 0 0 0 30 500 589 15 1 84 0 0 2 0 0 180 232 544 0 0 0 3 502 595 12 1 87 0 0 0 0 0 508 232 293 0 0 0 74 1161 1036 77 5 18 0 0 0 0 0 626 233 175 0 0 0 150 385 447 2 1 97 0 0以上各個字段的意思分別是:
好了,命令介紹完畢,現在開始實戰講解每個參數的意思。
r 表示運行隊列(就是說多少個進程真的分配到CPU),當這個值超過了CPU數目,就會出現CPU瓶頸 了。這個也和top的負載有關系,一般負載超過了3就比較高,超過了5就高,超過了10就不正常了,服務器的狀態很危險。top的負載類似每秒的運行隊 列。如果運行隊列過大,表示你的CPU很繁忙,一般會造成CPU使用率很高。
b 表示阻塞的進程,這個不多說,進程阻塞,大家懂的。
swpd 虛擬內存已使用的大小,如果大于0,表示你的機器物理內存不足了,如果不是程序內存泄露的原因,那么你該升級內存了或者把耗內存的任務遷移到其他機器。
free 空閑的物理內存的大小,我的機器內存總共8G,剩余3415M。
buff Linux/Unix系統是用來存儲,目錄里面有什么內容,權限等的緩存,我本機大概占用300多M
cache cache直接用來記憶我們打開的文件,給文件做緩沖,我本機大概占用300多M(這里是Linux/Unix的聰明之處,把空閑的物理內存的一部分拿來做文件和目錄的緩存,是為了提高 程序執行的性能,當程序使用內存時,buffer/cached會很快地被使用。)
si 每秒從磁盤讀入虛擬內存的大小,如果這個值大于0,表示物理內存不夠用或者內存泄露了,要查找耗內存進程解決掉。我的機器內存充裕,一切正常。
so 每秒虛擬內存寫入磁盤的大小,如果這個值大于0,同上。
bi 塊設備每秒接收的塊數量,這里的塊設備是指系統上所有的磁盤和其他塊設備,默認塊大小是1024byte,我本機上沒什么IO操作,所以一直是0,但是我曾在處理拷貝大量數據(2-3T)的機器上看過可以達到140000/s,磁盤寫入速度差不多140M每秒
bo 塊設備每秒發送的塊數量,例如我們讀取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO過于頻繁,需要調整。
in 每秒CPU的中斷次數,包括時間中斷
cs 每秒上下文切換次數,例如我們調用系統函數,就要進行上下文切換,線程的切換,也要進程上下文切換,這個值要越小越好,太大了,要考慮調低線程或者進程的 數目,例如在apache和nginx這種web服務器中,我們一般做性能測試時會進行幾千并發甚至幾萬并發的測試,選擇web服務器的進程可以由進程或 者線程的峰值一直下調,壓測,直到cs到一個比較小的值,這個進程和線程數就是比較合適的值了。系統調用也是,每次調用系統函數,我們的代碼就會進入內核 空間,導致上下文切換,這個是很耗資源,也要盡量避免頻繁調用系統函數。上下文切換次數過多表示你的CPU大部分浪費在上下文切換,導致CPU干正經事的 時間少了,CPU沒有充分利用,是不可取的。
us 用戶CPU時間,我曾經在一個做加密解密很頻繁的服務器上,可以看到us接近100,r運行隊列達到80(機器在做壓力測試,性能表現不佳)。
sy 系統CPU時間,如果太高,表示系統調用時間長,例如是IO操作頻繁。
id 空閑 CPU時間,一般來說,id + us + sy = 100,一般我認為id是空閑CPU使用率,us是用戶CPU使用率,sy是系統CPU使用率。
wt 等待IO CPU時間。
(五)/proc/*
1、查看CPU信息
cat /proc/cpuinfo中的信息processor 邏輯處理器的id。physical id 物理封裝的處理器的id。core id 每個核心的id。cpu cores 位于相同物理封裝的處理器中的內核數量。siblings 位于相同物理封裝的處理器中的邏輯處理器的數量。 1 查看物理CPU的個數 #cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc –l2、 查看邏輯CPU的個數 #cat /proc/cpuinfo |grep "processor"|wc –l3、 查看CPU是幾核 #cat /proc/cpuinfo |grep "cores"|uniq4、 查看CPU的主頻 #cat /proc/cpuinfo |grep MHz|uniq 5、 # uname -a6、 Linux euis1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux(查看當前操作系統內核信息)7、 # cat /etc/issue | grep Linux8、 Red Hat Enterprise Linux AS release 4 (Nahant Update 5(查看當前操作系統發行版信息)9、 # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c8 Intel(R) Xeon(R) CPU E5410 @ 2.33GHz(看到有8個邏輯CPU, 也知道了CPU型號)9 # cat /proc/cpuinfo | grep physical | uniq -c4 physical id : 04 physical id : 1(說明實際上是兩顆4核的CPU)10、# getconf LONG_BIT32(說明當前CPU運行在32bit模式下, 但不代表CPU不支持64bit)11、# cat /proc/cpuinfo | grep flags | grep ' lm ' | wc –l8(結果大于0, 說明支持64bit計算. lm指long mode, 支持lm則是64bit)12、如何獲得CPU的詳細信息:linux命令:cat /proc/cpuinfo13、用命令判斷幾個物理CPU,幾個核等:邏輯CPU個數:# cat /proc/cpuinfo | grep "processor" | wc -l物理CPU個數:# cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l14、每個物理CPU中Core的個數:# cat /proc/cpuinfo | grep "cpu cores" | wc -l15、是否為超線程?如果有兩個邏輯CPU具有相同的”core id”,那么超線程是打開的。每個物理CPU中邏輯CPU(可能是core, threads或both)的個數: # cat /proc/cpuinfo | grep "siblings"2.查看內存信息命令cat /proc/meminfo3.查看硬盤信息命令fdisk -l(六)mtr
Mtr是 Linux中有一個非常棒的網絡連通性判斷工具,它結合了ping, traceroute,nslookup 的相關特性。
最簡單的使用辦法:
mtr ip
使用report的模式輸出,統計次數為10次
mtr -r 8.8.8.8 -c 10 HOST: gdc-storm01-storm.i.nease.n Loss% Snt Last Avg Best Wrst StDev1.|-- 192.168.172.3 0.0% 10 0.5 0.5 0.4 0.6 0.02.|-- 115.238.118.181 0.0% 10 0.7 0.7 0.6 0.8 0.13.|-- 124.160.128.125 0.0% 10 0.5 0.4 0.4 0.5 0.04.|-- 124.160.81.173 50.0% 10 9.5 6.1 2.8 9.5 2.7| `|-- 124.160.82.81| |-- 124.160.81.177| |-- 124.160.81.185| |-- 124.160.82.1335.|-- 219.158.6.157 50.0% 10 29.1 38.5 26.1 70.8 18.4| `|-- 219.158.99.2096.|-- 219.158.3.250 0.0% 10 36.2 29.9 27.3 36.2 2.5| `|-- 219.158.96.2267.|-- 219.158.19.89 0.0% 10 46.5 29.5 26.3 46.5 6.0| `|-- 219.158.96.2548.|-- 219.158.101.178 0.0% 10 48.4 38.0 34.3 48.4 3.8| `|-- 219.158.101.1669.|-- 72.14.215.130 70.0% 10 28.9 29.1 28.7 29.6 0.510.|-- 209.85.248.62 50.0% 10 35.9 36.7 32.7 44.0 4.611.|-- 209.85.142.185 60.0% 10 114.0 113.5 111.3 114.9 1.512.|-- 209.85.247.97 50.0% 10 78.7 78.0 76.0 79.7 1.713.|-- 216.239.50.85 50.0% 10 110.2 111.9 108.6 118.1 4.114.|-- 72.14.237.177 30.0% 10 116.6 117.9 113.9 133.0 6.815.|-- ??? 100.0 10 0.0 0.0 0.0 0.0 0.016.|-- google-public-dns-a.googl 20.0% 10 113.7 116.3 113.7 117.4 1.2mtr -s:
用來指定ping數據包的大小
mtr -a:
來設置發送數據包的IP地址 這個對一個主機由多個IP地址是有用的
(七)iperf:檢查2臺機器間的網絡帶寬
其中一臺充當服務器:
# iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ [ 4] local 10.171.94.155 port 5001 connected with 10.171.29.191 port 46455 ------------------------------------------------------------ Client connecting to 10.171.29.191, TCP port 5001 TCP window size: 143 KByte (default) ------------------------------------------------------------ [ 6] local 10.171.94.155 port 52215 connected with 10.171.29.191 port 5001 [ ID] Interval Transfer Bandwidth [ 6] 0.0-10.0 sec 664 MBytes 557 Mbits/sec [ 4] 0.0-10.0 sec 466 MBytes 390 Mbits/sec另一臺充當客戶端:
# iperf -c 10.171.94.155 -f m -d ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 0.08 MByte (default) ------------------------------------------------------------ ------------------------------------------------------------ Client connecting to 10.171.94.155, TCP port 5001 TCP window size: 0.10 MByte (default) ------------------------------------------------------------ [ 4] local 10.171.29.191 port 46455 connected with 10.171.94.155 port 5001 [ 5] local 10.171.29.191 port 5001 connected with 10.171.94.155 port 52215 [ ID] Interval Transfer Bandwidth [ 4] 0.0-10.0 sec 466 MBytes 390 Mbits/sec [ 5] 0.0-10.0 sec 664 MBytes 555 Mbits/sec(八)tcpdump:檢查數據包的傳輸情況
# tcpdump port 8649 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 20:43:11.396729 IP master.38498 > slave1.8649: UDP, length 136 20:43:11.396746 IP master.38498 > slave1.8649: UDP, length 64 20:43:11.397101 IP master.38498 > slave1.8649: UDP, length 136 20:43:11.397105 IP master.38498 > slave1.8649: UDP, length 64 20:43:11.397107 IP master.38498 > slave1.8649: UDP, length 136 20:43:11.397108 IP master.38498 > slave1.8649: UDP, length 80 20:43:11.397109 IP master.38498 > slave1.8649: UDP, length 64 20:43:11.397110 IP master.38498 > slave1.8649: UDP, length 144 20:43:11.397111 IP master.38498 > slave1.8649: UDP, length 68 20:43:11.397112 IP master.38498 > slave1.8649: UDP, length 156 20:43:11.397114 IP master.38498 > slave1.8649: UDP, length 188 20:43:11.397115 IP master.38498 > slave1.8649: UDP, length 92 20:43:11.397116 IP master.38498 > slave1.8649: UDP, length 88還可以使用host等參數。
(九)nslookup
(十)traceroute
(十一)strace
總結
以上是生活随笔為你收集整理的linux常用工具命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: storm UI解释
- 下一篇: 如何在linux操作系统中安装oracl