查看Linux系統狀態的常用命令


一、查看CPU的詳細情況

判斷服務器CPU的情況依據如下:
a. 具有相同的core id 的PUC是由同一個core的超線程。
b. 具有相同的physical id 的CPU是同一個CPU封閉的線程或核心
方法1:
物理個CPU個數如下:
以下爲2個CPU

[root@Qinglin-A ~]# cat /proc/cpuinfo|grep "physical id"|sort|uniq|wc -l
2

每個物理CPU中的core的個數(即核數):

[root@Qinglin-A ~]# cat /proc/cpuinfo |grep "cpu cores"|sort|uniq|wc -l
1

邏輯CPU的個數

[root@Qinglin-A ~]# cat /proc/cpuinfo |grep "process"|wc -l
24

方法2:
lscpu命令查看

[root@Qinglin-A ~]# lscpu
Architecture:          x86_64                  ==>架構爲64位
CPU op-mode(s):        32-bit, 64-bit          ==>32位和64位模式
Byte Order:            Little Endian           ==>大段小段
CPU(s):                24                      ==>CPU線程數
On-line CPU(s) list:   0-23                    ==>CPU線程0到23
Thread(s) per core:    2                       ==>每個盒數有多少線程
Core(s) per socket:    6                       ==>CPU的盒數
Socket(s):             2                       ==>CPU的插槽
NUMA node(s):          2                       ==>非統一內在訪問,並不重要
Vendor ID:             GenuineIntel            ==>CPU廠商
CPU family:            6                       ==>CPU的家族系列
Model:                 62                      ==>CPU的型號
Stepping:              4                       ==>步進
CPU MHz:               2600.082                ==>CPU主頻
BogoMIPS:              5199.24                 ==>Linux操作系統中衡量計算機處理器運行速度的一種尺度
Virtualization:        VT-x                    ==>是否支持虛擬化
L1d cache:             32K                     ==>一級緩存32K
L1i cache:             32K                     ==>一級緩存32K
L2 cache:              256K                    ==>二級緩存256k
L3 cache:              15360K                  ==>三級緩存15360k
NUMA node0 CPU(s):     0,2,4,6,8,10,12,14,16,18,20,22   ==>NUMA節點0
NUMA node1 CPU(s):     1,3,5,7,9,11,13,15,17,19,21,23   ==>NUMA節點1

二、查看linux服務器的內存使用情況

查看linux下內存使用情況,可以使用命令free -m。注意此命令在linux有效,在FreeBSD中沒有此命令。

[root@Qinglin-A ~]# free -m
             total       used       free     shared    buffers     cached
Mem:         15933      13142       2791          0        437       8810
-/+ buffers/cache:       3894      12038
Swap:        16383         10      16373

total:內存總數
used:已經使用的內在數
free:空閒的內存數
shared:多個進程共享的內存總額
-buffers/cache:(已用)的內存數,即used-buffers-cached
+buffers/cache:(可用)的內存數,即free+buffers+cached
結論:
可用內存的計算公式爲:
可用內存=free+buffers+cachaed,即2791+437+8810=12038MB
疑問:
爲什麼windwos下內存才用了200M不到,但是linux上free纔有232MB可用呢?
其實是Linux內存機制問題,以下舉例說明,-m的意思是用M個字節來顯示內容。

[root@Qinglin-A ~]# free -m
             total       used       free     shared    buffers     cached
Mem:         15933      13142       2791          0        437       8810
-/+ buffers/cache:       3894      12038
Swap:        16383         10      16373

在第一部分Mem行中有如下參數
total:內存總數,即15933MB
used:已經使用的內存數,即13142MB
free:空閒的內存數,即2791MB
shared:當前已經廢棄不用,總是0
buffers:緩存的內存數,即437MB
cache page:緩存的內存數,即8819MB
其中,內存總數與已使用內存數和空閒內存數的關係是
total(15933M)=used(13142M)+free(232M)
在第二部分內容(-/+buffers/cache)中各參數如下所示:
(-buffers/cache):used 內存數,即3894(指的是第一部分Mem行中的used(13142MB)-buffers(437MB)-cached(8810MB)=3894MB)
(+buffers/cache):free內存數,即12038(指的是第一部分Mem行中的free(2791MB)+buffers(437MB)+cache(8810MB)=12038MB)
-buffers/cache是實實在在用掉的內存
+buffers/cache是實實在在可用的內存
第三部分是指交換分區(swap)分區
補充
爲什麼第一部分的free會那麼少?從兩個度來說明
角度一:系統角度上講buffers和cache都屬於被使用的,爲什麼被使用呢?因爲buffer和cache都屬於被使用,所以它認爲free只有2791MB,當程序使用
內存時,buffer/cached很快就會被使用
角度二:應用角度來講,主要看used和free爲主。
另外,爲了提高磁盤和內存的存儲效率,還採取兩種cache方式,Buffer cache和Page Cache,前者針對磁盤的塊的讀寫,後者針對文件inode的讀寫。
這些Cachae能有效的縮短I/O系統調用(比如:read(讀),write(寫),getdents(系統調用)


三、Linux服務器的硬盤使用情況

1、查看硬盤的信息
以下這是塊21.5G的硬盤

[root@Qinglin-A ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000295a5
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        2220    17619968   83  Linux
/dev/sda3            2220        2611     3145728   82  Linux swap / Solaris

2、查看磁盤的使用情況
下面是查看磁盤佔用情況(-h是human)

[root@Qinglin-A ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        17G  1.7G   15G  11% /
tmpfs           935M     0  935M   0% /dev/shm
/dev/sda1       194M   34M  151M  19% /boot

下面是查看inode佔用情況(-i是inode)

[root@Qinglin-A ~]# df -i
Filesystem      Inodes IUsed   IFree IUse% Mounted on
/dev/sda2      1101600 61466 1040134    6% /
tmpfs           239312     1  239311    1% /dev/shm
/dev/sda1        51200    39   51161    1% /boot

3、查看磁盤I/O性能

[root@Qinglin-A ~]# iostat -x
Linux 2.6.32-431.el6.x86_64 (Qinglin-A)         05/27/2016      _x86_64_        (2 CPU)
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.01    0.00    0.09    0.08    0.00   99.82
Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.26     0.05    0.32    0.05    11.38     0.79    33.02     0.00    7.72   4.53   0.17
scd0              0.00     0.00    0.00    0.00     0.04     0.00     8.00     0.00    2.70   2.70   0.00

參數說明
device:設備名稱
rrqm/s:每秒進行merge的寫操作數目,即delta(rmerge)/s
wrqm/s:每秒進行merge的寫操作數目,即delta(wmerge)/s
r/s:每秒完成的讀I/O設備的次數,即delta(rio)/s
w/s:每秒完成的寫I/O設備的次數,即delta(wio)/s
rsec/s:每秒讀扇區數,即delta(rsect)/s
wsec/s:每秒寫扇區數,即delta(wsect)/s
rkB/s:每秒讀K字節數。是rsect/s的一半,因爲每扇區大小爲512字節
wkB/s:每秒寫K字節數。是wsect/s的一半
avgrq-sz:平均每次設備I/O操作的數據大小(即扇區),即delta(rsect + wsect)/delta(rio+wio)
avgqu-sz:平均I/O隊列的長度,即delta(aveq)/s/100(除以1000是因爲aveq的單位爲毫秒)
await:平均每次設備I/O操作的等待時間(單位:毫秒),即delta(ruse + wuse) /delta(rio+wio)
svtm:平均每次設備I/O操作的服務時間(單位:毫秒),即delta(use)/delta(rio+wi)
% utl:一秒中有百分之多少的時間用於I/O操作,或者說一秒中有多少時間I/O隊列是非空的,即delta(use)/s/100(因爲use的單位爲毫秒)
如果%utl 接近100%,說明產生的I/O請求太多了,I/O系統已經滿負荷,該磁盤可能存在瓶頸
如果idle小於70%,I/O的壓力就比較大了,說明讀取進程中有較多的wait。

四、查看Linux系統的平均負載

起因:有時候覺的系統響應很慢,但是沒有跡象造成很慢的原因。這時候就需要看平均負載了。
負載會反映CPU、磁盤IO等綜合性能。

[root@Qinglin-A ~]# uptime
 10:53:00 up 1 day, 23 min,  1 user,  load average: 0.01, 0.02, 0.03

10:53:00:代碼當前時間
up 1 day, 23 min:代表系統運行了1天34分鐘
user:代表運行了1個用戶
load average:三個數字,以1分鐘,5分鐘,15分分別代碼平均進程數量。
思考:
load average如何衡量當前系統負載過高呢?
1個CPU單核,這個值一定是1以下,超過1說明這條道路已經跑滿。
2個CPU雙核,這個值一定是4以下,雙核x雙核=4核,超過4,說明這條道路已經跑滿。
1個CPU雙核4線程,這個值一定是8以下,單核4線程+單核雙線程=雙核8線程,如果8,說明這條道路已經跑滿了。

五、查看Linux系統的整體性能

vmstat,是用來監控linux系統的整體性能的工具
vmstat非常全面,可以觀察系統的進程狀態,內存使用情況,虛擬內存使用情況,I/O、中斷、上下文切換、CPU的使用情況等性能信息

[root@cnCodec_31 ~]# vmstat 1 5     ==>1 5是顯示5行,每行每秒遞增1條最近狀態
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   3740 198748  68680 31246068    0    0     2     8    2    1  1  1 95  4  0
 0  0   3740 190560  68684 31253764    0    0     0    24 8119  847  0  0 100  0  0
 0  0   3740 187040  68684 31257584    0    0     0     0 8277  784  0  0 100  0  0
 0  0   3740 206140  68684 31238596    0    0     0     0 9033  868  0  0 100  0  0
 0  0   3740 199336  68684 31246040    0    0     0     0 8280  834  0  0 100  0  0

Procs:
r = 等待運行的進程數
b = 處在非中斷睡眠狀態的進程
w = 被交換出去的可運行的進程數,此數由linux計算得出,但Linux並不耗盡交換空間。
menory:
swpd = 虛擬內存使用的情況,單位爲KB。
free = 空間的內存,單位爲KB。
buff = 被用來作爲緩存的內存數,單位爲KB。
swap:
si = 從磁盤交換到內存的交換頁數量,單位爲KB。
so = 從內存交換到磁盤的交換頁數量,單位爲KB。
io:
bi = 發送到塊設備的塊數,單位爲塊。

bo = 從內存交換到磁盤的交換頁面數量,單位爲KB。
system:
in = 每秒的中斷數,包括時鐘中斷。
cs = 每秒的環境(上下文)切換次數。
cpu:
按CPU的總使用百分比來顯示。
us = CPU使用時間。
sy = CPU系統使用時間。
id = 閒置時間。
標準情況下r和b值應該爲:
r < 5 , b ≈ 0
r經常大於3或4,且id經常少於50,表示CPU的負載很重。
bi、bo長期不等於0,表示內存不足
disk 經常不等於0,且在b中的隊列大於2或3,表示io的性能不好。


六、查看Linux系統的網絡連接

1、netstat 命令的功能是顯示網絡連接、路由表和網絡接口的信息,可以讓用戶得知目前都有哪些網絡連接正在動作。
下面是它的重要參數,以及詳細的說明文字。
-A:顯示任務失聯的協議控制塊的地址。主要用於調試。
-a:顯示所有套接字的狀態。在一般情況下不顯示與服務器進程相關聯的套接字。
-i:顯示自動配置接口的狀態。那此在系統初始引導後配置的接口狀態不在輸出之列。
-m:打印網絡存儲器的使用情況。
-n:打印實際地址,而不是對地址的解釋或顯示主機、網絡名之類的符號。
-r:打印路由選擇表。
-f address:family 會地給出名字的地址簇打印統計數字 和控制塊信息。到目前爲止,它唯 一支持的地址簇是inet
-I interface:表示只打印給出名字的接口狀態。
-p prootocol-name:表示只打印給出名字的協議的統計數字和協議控制塊信息。
-s:打印每個協議的統計數字。
-t:表示在輸出顯示中用的時間信息代替隊列長度信息。

root@cmnet_lz_148:/# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 0.0.0.0:53263               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:30004               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:10050               0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:199               0.0.0.0:*                   LISTEN      
tcp        0      0 223.87.5.148:10050          124.251.55.199:48350        TIME_WAIT   
tcp        0      0 223.87.5.148:10050          124.251.55.199:52602        TIME_WAIT   
tcp        0      0 223.87.5.148:10050          124.251.55.199:52950        TIME_WAIT   
tcp        0      0 223.87.5.148:10050          124.251.55.199:51381        TIME_WAIT   
tcp        0      0 223.87.5.148:10050          124.251.55.199:47513        TIME_WAIT   
tcp        0      0 223.87.5.148:10050          124.251.55.199:47160        TIME_WAIT   
tcp        0      0 223.87.5.148:44973          124.251.55.201:4506         ESTABLISHED

netstat -an參數 state的含義如下所示:
LISTEN:偵聽來自遠方的TCP端口的連接請求。
SYS-SENT:在發送連接請求後等待匹配的連接請求。
SYS-RECEIVED:在收到和發送一個連接請求後等待對方連接請求的確認。
ESTABLISHED:代表一個打開的連接,我們常用此作爲併發數連接數。
FIN-WAIT-1:等待遠程TCP連接中斷請求,或先前的連接中斷請求的確認。
FIN-WAIT-2:從遠程TCP等待連接中斷請求。
CLOSSE-WAIT:等待從本地用戶發來的連接中斷請求。
CLOSSE:等待遠程TCP對連接中斷的確認。
LAST-ACK:等待原來發向遠程TCP的連接中斷請求的確認。
TIME-WAIT:等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認。
CLOSED:沒有任務連接狀態。
實例:查看shell命令組合,用來查看服務器網絡連接狀態並彙總,命令如下:
以下是我們線上環境的狀態

[qinglin@Qinglin-test ~]$ netstat -an|awk '/^tcp/ { ++s[$NF]} END {for (a in s) print a,s[a]}'
TIME_WAIT 80123
FIN_WAIT1 483
ESTABLISHED 103
FIN_WAIT2 15821
SYN_RECV 311
CLOSING 95
LAST_ACK 5
LISTEN 10

參數說明:
CLOSED:沒有連接是活動的或正在進行的。
LISTEN:服務器在等等進入呼叫。
SYN_RECV:一個連接請求已經到達,等待確認。
SYN_SENT:應用已經開始,打開一個連接。
ESTABLISHED:正常數據傳輸狀態。它的值 也可以近似理解爲當前服務器的併發數。
FIN-WAIT1:應用已經開始,打開一個連接。
FIN-WAIT2:另一連已同意釋放。
ITMED_WAIT:等待所有分組死掉。
CLOSING:兩邊同時嘗試關閉。
TIME_WAIT:另一連已初始化一個釋放。
LAST_ACK:等待兩所有分組死掉。
2、查看路由表route -n
所顯示的內容UG這行就是系統的默認網關。

[root@Qinglin-Site ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
123.56.224.0    0.0.0.0         255.255.252.0   U     0      0        0 eth1
10.172.128.0    0.0.0.0         255.255.248.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
172.16.0.0      10.172.135.247  255.240.0.0     UG    0      0        0 eth0
100.64.0.0      10.172.135.247  255.192.0.0     UG    0      0        0 eth0
10.0.0.0        10.172.135.247  255.0.0.0       UG    0      0        0 eth0
0.0.0.0         123.56.227.247  0.0.0.0         UG    0      0        0 eth1

3、跟蹤路由traceroute

[root@Qinglin-Site ~]# traceroute www.baidu.com
traceroute to www.baidu.com (115.239.211.112), 30 hops max, 60 byte packets
 1  182.92.151.249 (182.92.151.249)  0.897 ms  1.182 ms  1.432 ms

4、域名解析nslookup與dig
nslookup

[root@Qinglin-Site ~]# nslookup 
> www.qinglin.net
Server:         10.202.72.116
Address:        10.202.72.116#53
Non-authoritative answer:
Name:   www.qinglin.net
Address: 123.56.227.214

dig

[root@Qinglin-Site ~]# dig www.qinglin.net          
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> www.qinglin.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<

dig指定DNS查詢

[root@Qinglin-Site ~]# dig @8.8.8.8 www.qinglin.net
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> @8.8.8.8 www.qinglin.net
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<

dig追蹤解析過程

[root@Qinglin-Site ~]# dig www.qinglin.net +trace
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> www.qinglin.net +trace
;; global options: +cmd
.                       225813  IN      NS      b.root-servers.net.
.                       225813  IN      NS      l.root-servers.net.
.                       225813  IN      NS      c.root-servers.net.
.                       225813  IN      NS      j.root-servers.net.
.                       225813  IN      NS      e.root-servers.net.
.                       225813  IN      NS      g.root-servers.net.
.                       225813  IN      NS      k.root-servers.net.
.                       225813  IN      NS      d.root-servers.net.
.                       225813  IN      NS      i.root-servers.net.
.                       225813  IN      NS      a.root-servers.net.
.                       225813  IN      NS      m.root-servers.net.
.                       225813  IN      NS      h.root-servers.net.
.                       225813  IN      NS      f.root-servers.net.
;; Received 496 bytes from 10.202.72.116#53(10.202.72.116) in 61 ms
net.                    172800  IN      NS      a.gtld-servers.net.
net.                    172800  IN      NS      b.gtld-servers.net.
net.                    172800  IN      NS      c.gtld-servers.net.
net.                    172800  IN      NS      d.gtld-servers.net.
net.                    172800  IN      NS      e.gtld-servers.net.
net.                    172800  IN      NS      f.gtld-servers.net.
net.                    172800  IN      NS      g.gtld-servers.net.
net.                    172800  IN      NS      h.gtld-servers.net.
net.                    172800  IN      NS      i.gtld-servers.net.
net.                    172800  IN      NS      j.gtld-servers.net.
net.                    172800  IN      NS      k.gtld-servers.net.
net.                    172800  IN      NS      l.gtld-servers.net.
net.                    172800  IN      NS      m.gtld-servers.net.
;; Received 490 bytes from 198.41.0.4#53(198.41.0.4) in 215 ms
qinglin.net.            172800  IN      NS      dns21.hichina.com.
qinglin.net.            172800  IN      NS      dns22.hichina.com.
;; Received 180 bytes from 192.42.93.30#53(192.42.93.30) in 253 ms
www.qinglin.net.        600     IN      A       123.56.227.214
;; Received 49 bytes from 42.120.221.26#53(42.120.221.26) in 44 ms

七、查看Linux服務器的進程

在linux 服務器正常啓動後,提供服務時會調用程序,佔用進程。之時候我們如何查看系統中那些在被調用。
1、ps命令
ps 命令是最基本同時也是非常強大的進程查看命令。使用該命令可以確定那些進程正在運行和它所運行的狀態、
進程 是否結束、進程有沒有僵死、那些進程戰勝了過多的資源等。總之大部分信息是可以通過執行該命令得到
的。PS命令最常用來監控後臺進程的工作情況,因爲後臺進程是屏幕、鍵盤這些標準輸入/輸出設備進行通信的,
如果需要檢測後臺情況,就需要使用這個命令了。
格式:
其主要選項如下:
-a:顯示系統中所有進程的信息。
-e:顯示所有進程的信息。
-f:顯示進程的所有信息。
-r:只顯示正在運行的進程。
-u:顯示面向用戶的格式(包括用戶名、CPU及內存的使用情況等信息)。
-x:顯示所有非控制終端上的進程信息。。
-p:顯示由進程ID指定的進程信息。
-t:顯示指定終端上的進程信息。
要對進程進行檢測和控制,首先要了解當前進程的情況,當然也就是需要查看當前進程的狀態了。通過ps命令查
看進程,根據所顯示的信息可以瞭解那個進程正在運行、那個進程被掛起了、進程已運行了多久、進程正在使用
的資源、進程的相對優先級,以及進程的標誌號(PID)。所有這些信息對用戶都有用,以於系統管理員來說優
其重要。要使用ps -aux使命令可以獲得終端上所有用戶的有關進程的所有信息,這個也是平時用得最多的命令
之一。

[root@Qinglin-Site ~]# ps -aux
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  19232   572 ?        Ss    2015   0:01 /sbin/init
root         2  0.0  0.0      0     0 ?        S     2015   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S     2015   0:00 [migration/0]
root         4  0.0  0.0      0     0 ?        S     2015   1:34 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S     2015   0:00 [migration/0]

USER:表示啓動用戶
PID:表示進程標誌號
%CPU:表示運行該進程佔用CPU的時間與該進程總的運行時間之比。
%MEN:表示該進程佔用內存與總內存之比。
VSZ:表示戰勝的虛擬內存大小,以KB爲單位
RSS:爲進程佔用的物理內存值,以KB爲單位
TTY:表示該進程建立時所對應的終端,“?”表示該進程不佔用終端
STAT:表示該進程的運行狀態。包括以下幾種代碼:D:不可中斷的睡眠,H:不可中斷的睡眠,R:就緒(在可運行隊列中);S:睡眠,T:被跟蹤或停止,Z,終止(僵死)的進程,這些進程不存在但是暫時無法消除,W:沒有足夠的內存分頁可分配,<:高優先級的進程,N:低優先級的進程,L:有內存分頁分配並鎖在內存體內(實時系統或I/O)
START:爲進程開始時間
TIME:爲執行的時間
COMMAND:是對應的命令名
2、TOP命令
top命令可動態顯示服務器的進程信息。top命令和ps 命令的基本作用是相同的,都顯示系統當前進程的狀態。
但top是一個動態顯示過程中,即用戶可以通過按鍵來不斷刷新當前狀態。

top - 18:46:14 up 195 days, 5 min,  2 users,  load average: 0.68, 0.51, 0.56
Tasks: 102 total,   2 running, 100 sleeping,   0 stopped,   0 zombie
Cpu(s): 61.5%us,  2.0%sy,  0.0%ni, 36.2%id,  0.0%wa,  0.0%hi,  0.3%si,  0.0%st
Mem:   1920740k total,  1813968k used,   106772k free,   154040k buffers
Swap:        0k total,        0k used,        0k free,   528292k cached
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                  
15798 nginx     20   0  334m  48m 4164 S 12.3  2.6   1:08.70 php-fpm                                                                  
15821 nginx     20   0  334m  48m 4164 S 12.0  2.6   0:53.05 php-fpm                                                                  
15826 nginx     20   0  334m  48m 3884 S 12.0  2.6   0:52.69 php-fpm                                                                  
15799 nginx     20   0  334m  48m 4184 S 11.6  2.6   0:53.47 php-fpm                                                                  
15816 nginx     20   0  333m  47m 4188 S  8.6  2.5   0:53.64 php-fpm                                                                  
15823 nginx     20   0  334m  48m 4240 R  6.0  2.6   0:49.74 php-fpm                                                                  
15719 nginx     20   0 47236 4984 2400 S  0.3  0.3   0:39.16 nginx                                                                    
15801 nginx     20   0  334m  48m 4168 S  0.3  2.6   1:03.08 php-fpm

第一行內容依次表示當前時間、系統啓動的時間、當前系統登陸的用戶數、平臺負載。
第二行依次顯示的是所有啓動的、目前運行的、掛起(sleeping)的和無用(Zombie)的進程。
第三行顯示的是CPU的使用情況,包括系統戰勝的比例、用戶使用比例、閒置(Idle)比例。
第四行顯示物理內存的使用情況、包括可以使用的內存、已經內存、空閒內存、緩衝區佔用的內存。
第五行顯示交換分區的使用情況、包括總的交換分區、使用的、空間的和用於高速緩存的交換分區。
第六行顯示的內容如下:
PID:進程標誌號,是非零正整數
USER:進程所有者的用戶名
PR:進程的優先級別
NI:進行的優先級別數值
VIRT:進程佔用的虛擬內存值
RES:進程佔用的物理內存值
SHR:進程使用的共享內存值
STAT:進程的狀態,其中s表示休眠,R表示正在運行,Z表示僵死狀態,N表示該進程是負數
%CPU:該進程佔用的CP時間
%MEN:該進程佔用的物理內存和總內存的百分比
TIME:該進程啓動後佔用的CPU時間
COMMAND:進程啓動的啓動命令名稱,如果這一行顯示不下,在進程中會有一個完整的命令行。
在top命令使用過程中,還可以使用一些交互的命令一完成其他參數的功能,這些命令是通過快捷鍵啓動的,格式如下所示:
<空格>:立刻刷新
主要參數如下所示:
P:根據CPU使用的多少進行排序
T:根據時間、累計時間排序。
q:退出top命令
m:切換顯示進程和CPU狀態信息
t:切換顯示進程的CPU狀態信息
c:切換顯示命令名稱和完整命令行
M:根據使用內存的大小進行排序
W:將當前設置寫入 ~./top文件中,這是top配置文件的推薦方法
4、kill與killall命令
kill命令的作用是終止一個進程。其格式如下:
kill [ -s singnal | -p] [ -a ]pid…
它的主要選項如下所示。
-s:指定發送的信號。
-p:模擬發送信息號。
-l:指定詐的名稱列表。
pid:要終止的進程ID號。
signal:表示信號。
kill可能指定的信息送至程序中。預設的信息爲SIGTERM(15),可將指定程序終止。若仍無法終止該程序,則可以使用SIGKILL(9)信息嘗試強制刪除程序。
kill命令的工作原理是,向linux系統的內核發送一個系統操作信號和某個程序的進程標誌號,然後系統內核就可以對進程標誌號指定的進程進行操作了。
當需要中斷一個前臺進程的時候,通常使用ctrl+c 組合鍵;但是對於一個後臺進程來說,就不是一個組合鍵所能解決的了,這時就需要kill命令。
另外 kill -9 可以強制殺掉進程,尤其適用於殭屍進程。
killall命令的作用是通過程序的名字,直接殺死所有進程,這裏簡單介紹一下。如果要殺掉nginx的所有進程,要用kill的話需要執行9次,但如果用killall nginx則可以
輕鬆地一次性解決問題。另外,pkill可以在服務器踢人,很方便。

八、額外補充添加靜態路由的命令

以下是Centos 5.5 添加靜態路徑的方法,手動添加路由的方式如下:

route add -net 172.16.6.0 netmask 255.255.255.0 gw 172.16.2.25

其中route add -net 是Cenos 下添加靜態路由網絡的方式,netmask是網絡段的子網,gw表示下一條地址,其實就是指172.16.6.0的網段的路由可以通過172.16.2.25出去。
這時臨時的效果,如果服務器重啓則失效,如何能讓其永久生效,則要寫下面的內容。

[root@Qinglin-Test1 ~]# vim /etc/sysconfig/network-scripts/route-eth0
172.16.6.0/24 via 172.16.2.25

寫入上述信息後,它會一直生效。在Centos 下查看路由表的方式很多,netstat -rn 或route -n 均可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章