bash shell命令與監測的那點事(二)

來源:互聯網
上載者:User

標籤:style   blog   http   ar   color   使用   sp   strong   檔案   

bash shell命令與監測的那點事之top

  上次我們說到了ps命令,ps命令雖然在收集運行在系統上的進程資訊很有用,但是也有不足之處,ps命令只能顯示某個特定時間點的資訊,如果你想觀察頻繁換進換出記憶體的進程的趨勢,用ps的命令就不方便了。

  而top命令剛好適用於這種情境。top命令跟ps命令相似,能夠顯示進程的資訊,但它是即時顯示的。是top命令輸出:

1 top - 16:56:13 up 120 days, 23:37,  3 users,  load average: 0.00, 0.00, 0.002 Tasks: 389 total,   1 running, 388 sleeping,   0 stopped,   0 zombie3 Cpu(s):  1.4%us,  0.5%sy,  0.0%ni, 98.0%id,  0.0%wa,  0.0%hi,  0.1%si,  0.0%st4 Mem:   3924432k total,  3744996k used,   179436k free,   144112k buffers5 Swap:  2097144k total,  1834356k used,   262788k free,   396948k cached
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                        
11629 root      20   0 15304 1484  952 R  1.6  0.0   0:04.29 top   

  輸出的第一部分顯示了系統的概況:第一行顯示了當前的時間、系統的已耗用時間、登入的使用者數以及系統的平均負載。

  平均負載有三個值:最近1分鐘的、最近5分鐘的以及最近15分鐘的平均負載。值越大說明平均負載越高,最近1分鐘的負載值很高這很正常,因為有時候會有進程突然開始活動,但是如果最近15分鐘的平均負載都很高,就說明系統可能有問題了。

  第二行顯示了概要的進程資訊——top命令的輸出中的進程叫任務(task):多少進程處於運行、休眠、停止或是僵化狀態。

  下一行顯示了CPu資訊。top根據進程的屬主(使用者還是系統)和進程的狀態(運行、空閑、還是等待)將CPU利用率分成幾類輸出。

  緊跟其後的兩行說明了系統記憶體的狀態。前行說的是系統的實體記憶體:總共多少記憶體,當前用了多少記憶體,還有多少空閑。後一行說的是同樣的資訊,不過是針對系統交換空間的狀態來說的。

  最後一部分是運行中的進程的詳細列表——有些列和ps命令輸出類似。

  •  PID:進程的進程號。
  • USER:進程的屬主名字。
  • PR:進程的優先順序。
  • NI:進程的謙讓度值。
  • VIRT:進程佔用的虛擬記憶體總值。
  • RES:進程佔用的實體記憶體總值。
  • SHR:進程和其它進程共用的記憶體總量。
  • S:進程的狀態(D代表可中斷的休眠狀態,R代表在啟動並執行狀態,S代表休眠狀態,T代表跟蹤狀態或者停止狀態,Z代表僵化狀態)。
  • %CPU:進程使用的CPU時間比例。
  • %MEM:進程使用的記憶體占可用記憶體的比例。
  • TIME+:自進程啟動到目前為止的CPU時間總量。
  • COMMAND:進程的命令名稱,也就是啟動的程式名。

  預設情況下,top命令在啟動時會按照%CPU值來排序,你可以在top運行時用下面的互動式命令之一來重新排序。每個互動式命令都是單字元,在top命令運行時鍵入可以改變top的行為。命令如下表所示:

1   切換單CPU狀態模式和對稱處理器模式
B 開啟/關閉表中重要數位加粗顯示
I 切換Irix/Solaris模式
Z 設定表的顏色
l 顯示/關閉平均負載資訊行
t   顯示/關閉CPU資訊行
m 顯示/關閉MEM和SWAP行
f 添加/移除輸出中的不同資訊列
o 更改資訊行的顯示順序
F或O 選擇一列來將進程排序
<或> 將排序的行左移或右移一列
R 切換正常排序還是倒序排序
H 顯示/關閉顯示線程的情況
C 切換顯示進程的命令,還是完整的命令列輸入
i 切換是否顯示空閑進程
S 切換顯示累計CPU時間還是相對CPU時間
x 開啟/關閉高亮顯示排序列
y 開啟/關閉高亮顯示運行中的任務
z 切換彩色模式還是單色模式
b 開啟/關閉x和y的高亮模式
u 顯示某個使用者的進程
n或# 設定要顯示的進程數
k 結束指定的進程(必須是進程屬主或是root使用者)
r 改變指定進程的優先順序(必須是進程屬主或是root使用者)
d或s 改變更新的間隔(預設值是3s)
W 把當前設定寫到一個設定檔中
q 退出top命令

結束進程

  系統管理員很重要的一個技能就是知道何時以及如何結束一個進程。有時進程掛起了,只要有辦法對付一下讓進程重新運行或結束就行了。但有時,進程會耗盡CPU而且不釋放資源,此時就要kill掉進程了。

  Linux沿用了Unix進行處理序間通訊的方法,在LInux上,進程間通過訊號通訊,下表列出了訊號代表的含義以及名稱:

訊號 名稱 描述
1 HUP 掛起
2 INT 中斷
3 QUIT 結束運行
9 KILL 無條件終止
11 SEGV 段錯誤
15 TERM 儘可能終止
17 STOP 無條件停止運行,但不終止
18 TSTP 停止或暫停,但繼續在後台運行
19 CONT 在STOP或TSTP之後恢複運行

kill命令

  kill命令可以通過PID給進程發訊號。預設情況下,kill命令會向命令列中列出的全部PID發送一個TERM訊號,遺憾的是只能用進程號而不能用命令名,所以有時候並不好用。

  -s參數支援指定其他訊號(用訊號名或者訊號值)。kill命令不會有任何輸出。下面舉個栗子:

1 [[email protected] ~]# kill -s HUP 8080

  它與下面的栗子等價:

1 kill -s 1 8080

 killall命令

  killall命令非常強大,它支援通過進程名而不是進程號來結束進程。killall命令也支援萬用字元,這在系統因負載過大而變得很慢時很有用:  

killall http*

  上面的栗子命令結束了所有以http開頭的進程,比如Apache Web伺服器的httpd服務。

bash shell命令與監測的那點事(二)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.