在linux下可以通過top命令來查系統運行狀態和進程運行狀態,通過man查看top手冊,top的解釋是display Linux tasks,以前看到過一個另外的解釋display top CPU processes,這個我覺得挺貼切的,因為top這個命令會自動把消耗高的進程排到前面,真的很形象。
1、命令說明
top 參數
-h:help表示顯示幫助的意思
-v:version顯示版本的意思,和-h的功能一樣
-u:user顯示指定用戶的進程,例如:top -u root
-p:pid顯示指定進程,例如:top -p 1
-n:number進入top後,top會定時刷新狀態,這個值就是設置刷新幾次
-d:delay進入top後,top會定時刷新狀態,這個值就是設置幾秒刷新一次
-b:Batch mode,top刷新狀態默認是在原數據上刷新,使用這個參數後,會一屏一屏的顯示數據。結合重定向功能和計劃任務,這個參數在記錄伺服器運行狀態時非常有用。
以上一些參數是在輸入命令時提供的參數,在top運行的過程中,還可以輸入一些快捷鍵來調整顯示內容。
一些命令運行時的快捷鍵說明:
q:quit退出程序
M:Memory按照內存使用量排序
P:CPU按照cpu使用量排序
k:kill殺死PID的進程,不輸入PID,直接按回車就會退出
1:能顯示CPU每個核心的情況
h或者?:help 查看更多快捷鍵
f:fields查看進程表頭欄位含義
2、命令測試
top
top命令測試
第一行說明:
top – :系統當前時間
up:伺服器連續運行的時間,筆者見過有伺服器連續運行一年以上,linux伺服器還是非常穩定的。
user:當前有多少用戶登錄系統
load average:這個邊有3個數值分別表示系統在前1分鍾,5分鍾,15分鍾的工作負載,根據筆者以往的經驗來看單核負載在3-5之間比較合適,經常在1以下,說明cpu利用率不高,在5以上,cpu會處於較高負載狀態,會容易宕機。有一次項目上線,晚上加班觀察伺服器狀況,這個值長時間保持在72左右,因為伺服器有八核,所以每核的值為9,後來伺服器就掛了。
第二行就是顯示任務的數量情況,其中zombie要注意一下,這個是表示僵屍進程,出現了僵屍進程要注意下僵屍進程是如何產生的。如果不找到產生原因,即使殺死了,可能也會再次出現。
第三行表示cpu的運行情況,按下1可以顯示每個核的運行情況。
第四行表示內存memory的使用情況。
第五行表示交換空間swap的使用情況。
下面顯示的就是進程的運行狀態了。每個表頭表示的含義如下:
PID:進程編號
USER:進程所屬用戶
PR/NI:Priority/Nice value進程執行的優先順序
VIRT:Virtual Image (kb) 虛擬內存使用總額
RES:Resident size (kb) 常駐內存
SHR:Shared Mem size (kb) 共享內存
S:Process Status 進程狀態
%CPU:cpu使用率
%MEM:內存使用率
TIME+:進程開始運行時使用cpu的總時間
COMMAND:進程運行的命令
在top狀態下按f可以查看錶頭欄位說明。
3、常用的命令:
top -b -n 60 -d 60 > /home/cpu.txt
該命令每隔60秒會將伺服器運行狀態保存到一個文本文件,共運行60次,其實就是將伺服器1個小時的運行狀態保存起來。使用這個命令,可以記錄伺服器在繁忙時的負載情況,例如設置到晚上8點到9點之間,這樣就可以根據伺服器狀態作出調整,而不是等伺服器掛了才來處理。上面命令各參數,大家可以根據自己需要修改。終於不用加班蹲點觀察伺服器了。
❷ Linux裡面top和free -h命令區別是什麼
top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源佔用狀況,常用於服務端性能分析。
free 命令能夠顯示系統中物理上的空閑和已用內存,還有交換內存,同時,也能顯示被內核使用的緩沖和緩存。這些信息是通過解析文件 /proc/meminfo 而收集到的。具體可以看《Linux就該這么學》
top有點類似windows裡面的任務管理器,所有信息都有。Free就只有內存的信息
❸ 按內存佔用排序和按CPU佔用排序的Linux TOP命令
Linux TOP命令默認是CPU佔用排序,按M可以切換到按內存佔用排序。這是系統維護和電腦內存維護。可以切換的。不同的用法,達到不同的效果。以下是關於這兩個的詳細說明。
P – 以 CPU 佔用率大小的順序排列進程列表
M – 以內存佔用率大小的順序排列進程列表
在系統維護的過程中,隨時可能有需要查看 CPU 使用率,並根據相應信息分析系統狀況的需要。在 CentOS 中,可以通過 top 命令來查看 CPU 使用狀況。運行 top 命令後,CPU 使用狀態會以全屏的方式顯示,並且會處在對話的模式 — 用基於 top 的命令,可以控制顯示方式等等。退出 top 的命令為 q (在 top 運行中敲 q 鍵一次)。
在命令行中輸入 「top」 即可啟動 top ,top 的全屏對話模式可分為3部分:系統信息欄、命令輸入欄、進程列表欄。
第一部分 — 最上部的 系統信息欄 :
第一行(top):
「14:55:59」為系統當前時刻;
「4 days, 5:52」為系統啟動後到現在的運作時間;
「1 user」為當前登錄到系統的用戶,更確切的說是登錄到用戶的終端數 — 同一個用戶同一時間對系統多個終端的連接將被視為多個用戶連接到系統,這里的用戶數也將表現為終端的數目;
「load average」為當前系統負載的平均值,後面的三個值分別為1分鍾前、5分鍾前、15分鍾前進程的平均數,一般的可以認為這個數值超過 CPU 數目時,CPU 將比較吃力的負載當前系統所包含的進程;
第二行(Tasks):
「12 total」為當前系統進程總數;
「1 running」為當前運行中的進程數;
「11 sleeping」為當前處於等待狀態中的進程數;
「0 stoped」為被停止的系統進程數;
「0 zombie」為被復原的進程數;
第三行(Cpus):
分別表示了 CPU 當前的使用率;
第四行(Mem):
分別表示了內存總量、當前使用量、空閑內存量、以及緩沖使用中的內存量;
第五行(Swap):
表示類別同第四行(Mem),但此處反映著交換分區(Swap)的使用情況。通常,交換分區(Swap)被頻繁使用的情況,將被視作物理內存不足而造成的。
第二部分 — 中間部分的內部命令提示欄:
top 運行中可以通過 top 的內部命令對進程的顯示方式進行控制。內部命令如下表:
s – 改變畫面更新頻率
l – 關閉或開啟第一部分第一行 top 信息的表示
t – 關閉或開啟第一部分第二行 Tasks 和第三行 Cpus 信息的表示
m – 關閉或開啟第一部分第四行 Mem 和 第五行 Swap 信息的表示
N – 以 PID 的大小的順序排列表示進程列表
P – 以 CPU 佔用率大小的順序排列進程列表
M – 以內存佔用率大小的順序排列進程列表
h – 顯示幫助
n – 設置在進程列表所顯示進程的數量
q – 退出 top
s – 改變畫面更新周期
第三部分 — 最下部分的進程列表欄:
以 PID 區分的進程列表將根據所設定的畫面更新時間定期的更新。通過 top 內部命令可以控制此處的顯示方式。
一般的,我們通過遠程監控的方式對伺服器進行維護,讓伺服器本地的終端實時的運行 top ,是在伺服器本地監視伺服器狀態的快捷便利之一。
ubuntu進程管理方法
ps 顯示當前進程
ps -l 顯示詳細信息
ps -u 以用戶的格式顯示
相關欄位說明
F 進程狀態標志
S 進程狀態代碼
UID 進程執行者ID
PPID 父進程標識(parent process ID)
PRI 進程執行的優先順序(priority)
NI 進程執行優先順序的nice值,負值表示其優先順序較高
SZ 進程佔用的內存大小
WCHAN 進程或系統調用等待時的地址
%CPU cpu使用百分比
%MEM 內存使用百分比
VSZ 佔用虛擬內存大小
RSS 佔用物理內存大小
START 進程開始時間
kill 刪除進程
kill pid 刪除指定pid的進程
kill -l 查看所有可供傳送的信號
kill -9 pid 強制刪除進程,傳送的是SIGKILL信號
kill -15 pid 強制刪除進程,傳送的是SIGTERM信號
kill -HUP pid 重啟Deamon進程
free 查看內存使用狀態
free -s 10 每10秒檢查內存使用情況
nice 設置執行優先順序,-20~19,19最低
sudo nice –2 vi 將vi的優先順序調為-2
renice 修改執行優先順序,-20~19,19最低
top 動態顯示進程
按」P」鍵 按CPU使用時間排序
按」M」鍵 按內存使用多少排序
按」T」鍵 按執行時間多少排序
按」u」鍵 監視特定用戶
按」K」鍵 刪除進程
top -d 10 指定更新時間
lsof -p 查看進程打開的文件
jobs 命令查看後台作業
ubuntu結束進程方法
1、打開終端
2、敲 ps -ef 查出進程的編號(就是PID那列)
3、敲 kill PID (如果PID是123456,則kill 123456)
4、OK了
在本地Ubuntu Linux系統運行大軟體的時候,或者伺服器長時間運行後,由於有些設計有缺陷的軟體,容易出現假死的情況!
那程序假死了以後,我們該怎麼辦呢?其實這個 問題其實說簡單也簡單,直接結束進程不就OK了嘛!就像我們在Windows下面做的一樣!下面來介紹幾種Ubuntu Linux下面結束進程的幾種方法!
最安全殺死進程的方法
殺死進程最安全的方法是單純使用kill命令,不加修飾符,不帶標志。
首先使用ps -ef命令確定要殺死進程的PID,然後輸入以下命令:
#kill -pid
注釋:標準的kill命令通常都能達到目的。終止有問題的進程,並把進程的資源釋放給系統。然而,如果進程啟動了子進程,只殺死父進程,子進程仍在運行,因此仍消耗資源。為了防止這些所謂的「僵屍進程」,應確保在殺死父進程之前,先殺死其所有的子進程。
還可以使用如下命令來確定要殺死進程的PID或PPID
# ps -ef | grep httpd
以最優雅的方式來結束進程
# kill -l PID
-l選項告訴kill命令用好像啟動進程的用戶已注銷的方式結束進程。當使用該選項時,kill命令也試圖殺死所留下的子進程。但這個命令也不是總能成功--或許仍然需要先手工殺死子進程,然後再殺死父進程。
TERM信號
給父進程發送一個TERM信號,試圖殺死它和它的子進程。
# kill -TERM PPID
killall命令
killall命令殺死同一進程組內的所有進程。其允許指定要終止的進程的名稱,而非PID。
# killall httpd
停止和重啟進程
有時候只想簡單的停止和重啟進程。如下:
# kill -HUP PID
該命令讓Linux和緩的執行進程關閉,然後立即重啟。在配置應用程序的時候,這個命令很方便,在對配置文件修改後需要重啟進程時就可以執行此命令。
絕殺 kill -9 PID
同意的 kill -s SIGKILL
這個強大和危險的命令迫使進程在運行時突然終止,進程在結束後不能自我清理。危害是導致系統資源無法正常釋放,一般不推薦使用,除非其他辦法都無效。
當使用此命令時,一定要通過ps -ef確認沒有剩下任何僵屍進程。只能通過終止父進程來消除僵屍進程。如果僵屍進程被init收養,問題就比較嚴重了。殺死init進程意味著關閉系統。
如果系統中有僵屍進程,並且其父進程是init,而且僵屍進程佔用了大量的系統資源,那麼就需要在某個時候重啟機器以清除進程表了