ps組合命令 ps -aux?
在linux中可以使用ps命令查看進程配合grep命令可以快速的查找到服務的進程
常見的組合有ps -ef 、ps -aux
常見參數(shù)為:
a: 顯示跟當前終端關(guān)聯(lián)的所有進程
u: 基于用戶的格式顯示(U: 顯示某用戶ID所有的進程)
x: 顯示所有進程,不以終端機來區(qū)分
[root@desktop-dcct8ee ~]# ps -aux
USER? ? ? ? PID %CPU %MEM? ? VSZ? RSS TTY? ? ? STAT START? TIME COMMAND
root? ? ? ? ? 1? 0.0? 0.1 190984? 3920 ?? ? ? ? Ss? 9月11? 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root? ? ? ? ? 2? 0.0? 0.0? ? ? 0? ? 0 ?? ? ? ? S? ? 9月11? 0:00 [kthreadd]
roo? ?521? 0.0? 0.0 190328? 1344 ?? ? ? ? Ss? 9月11? 0:00 /usr/sbin/lvmetad -f
root? ? ? ? 524? 0.0? 0.1? 45648? 3204 ?? ? ? ? Ss? 9月11? 0:00 /usr/lib/systemd/systemd-udevd
注:最后一列[xxxx] 使用方括號括起來的進程是內(nèi)核態(tài)的進程。 沒有括起來的是用戶態(tài)進程。
上面的參數(shù)輸出每列含意:
USER: 啟動這些進程的用戶
PID: 進程的ID
%CPU 進程占用的CPU百分比;?%MEM 占用內(nèi)存的百分比;?
VSZ:進程占用的虛擬內(nèi)存大?。▎挝唬篕B)?RSS:進程占用的物理內(nèi)存大?。▎挝唬篕B)?
STAT:該程序目前的狀態(tài),Linux進程有5種基本狀態(tài):
R :該程序目前正在運作,或者是可被運作;
S :該程序目前正在睡眠當中 (可說是 idle 狀態(tài)啦!),但可被某些訊號(signal) 喚醒。
T :該程序目前正在偵測或者是停止了;
Z?:該程序應該已經(jīng)終止,但是其父程序卻無法正常的終止他,造成 zombie (疆尸) 程序的狀態(tài)
D ?不可中斷狀態(tài).??
5個基本狀態(tài)后,還可以加一些字母,比如:Ss、R+,如下:
它們含意如下::
? ??<: 表示進程運行在高優(yōu)先級上
? ??N: 表示進程運行在低優(yōu)先級上
? ??L: 表示進程有頁面鎖定在內(nèi)存中
? ??s: 表示進程是控制進程
? ??l: 表示進程是多線程的
? ??+: 表示當前進程運行在前臺
START:該 process 被觸發(fā)啟動的時間;
TIME?:該 process 實際使用 CPU?運作的時間。
COMMAND:該程序的實際指令
ps組合命令 ps -ef
ps常用的參數(shù): ps -ef
??-e ?顯示所有進程
??-f ?顯示完整格式輸出
[root@desktop-dcct8ee ~]# ps -ef |more
UID? ? ? ? PID? PPID? C STIME TTY? ? ? ? ? TIME CMD
root? ? ? ? ? 1? ? ? 0? 0 9月11 ?? ? ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root? ? ? ? ? 2? ? ? 0? 0 9月11 ?? ? ? 00:00:00 [kthreadd]
root? ? ? ? ? 3? ? ? 2? 0 9月11 ?? ? ? 00:00:00 [ksoftirqd/0]
root? ? ? ? ? 5? ? ? 2? 0 9月11 ?? ? ? 00:00:00 [kworker/0:0H]
root? ? ? ? ? 7? ? ? 2? 0 9月11 ?? ? ? 00:00:00 [migration/0]
root? ? ? ? ? 8? ? ? 2? 0 9月11 ?? ? ? 00:00:00 [rcu_bh]
包含的信息如下
UID: 啟動這些進程的用戶
PID: 進程的ID
PPID: 父進程的進程號
C: 進程生命周期中的CPU利用率
STIME: 進程啟動時的系統(tǒng)時間
TTY: 表明進程在哪個終端設(shè)備上運行。如果顯示???表示與終端無關(guān),這種進程一般是內(nèi)核態(tài)進程。另外,tty1-tty6 是本機上面的登入者程序,若為 pts/0?等,則表示運行在虛擬終端上的進程。
TIME: 運行進程一共累計占用的CPU時間
CMD: 啟動的程序名稱
例1:測試CPU使用時間。
dd if=/dev/zero of=/a.txt count=10 bs=100M
[root@localhost ~]# ps -axu | grep dd
注:
ps aux 是用BSD的格式來顯示進程。
ps -ef 是用標準的格式顯示進程
uptime查看系統(tǒng)負載
[root@desktop-dcct8ee ~]# uptime
00:45:16 up? 4:55,? 2 users,? load average: 0.00, 0.01, 0.05
彈出消息含意如下:
00:45:16?當前時間
up? 4:55?系統(tǒng)運行時間 ,說明此服務器連續(xù)運行20天了
2?user當前登錄用戶數(shù)
load average: 0.00, 0.01, 0.05系統(tǒng)負載,即任務隊列的平均長度。?三個數(shù)值分別為??1分鐘、5分鐘、15分鐘前到現(xiàn)在的平均值。
如果服務器的CPU為1核心,則load average中的數(shù)字>=3 ?負載過高,如果服務器的CPU為4核心,則load average中的數(shù)字>=12 ?負載過高。
經(jīng)驗:單核心,1分鐘的系統(tǒng)平均負載不要超過3,就可以,這是個經(jīng)驗值。
top命令動態(tài)查看
進程和CPU的信息(?第二、三行)
Tasks: 481 total進程總數(shù)
1 running正在運行的進程數(shù)
480 sleeping睡眠的進程數(shù)
0 stopped停止的進程數(shù)
0 zombie僵尸進程數(shù)
Cpu(s): 0.0% us系統(tǒng)用戶進程使用CPU百分比。
0.0% sy內(nèi)核中的進程占用CPU百分比
0.0% ni用戶進程空間內(nèi)改變過優(yōu)先級的進程占用CPU百分比
98.7% id空閑CPU百分比
0.0% wacpu等待I/0完成的時間總量。
內(nèi)存信息(第四五行)
Mem:?2033552k total物理內(nèi)存總量
340392k used使用的物理內(nèi)存總量
1376636k free空閑內(nèi)存總量
316524k buff/cache用作內(nèi)核緩存的內(nèi)存量。
和free -k 一個意思
Swap:?2017948k total交換區(qū)總量
0k used使用的交換區(qū)總量
192772k free空閑交換區(qū)總量
1518148 avail Mem總的可利用內(nèi)存是多少
第7行進程信息
PID進程id
USER進程所有者的用戶名
PR優(yōu)先級(由內(nèi)核動態(tài)調(diào)整),用戶不能
NI進程優(yōu)先級。 nice值。負值表示高優(yōu)先級,正值表示低優(yōu)先級,用戶可以自己調(diào)整
VIRT(virtual memory usage)虛擬內(nèi)存,是進程正在使用的所有內(nèi)存(ps中標為VSZ)
VIRT:virtual memory usage 虛擬內(nèi)存
1、進程“需要的”虛擬內(nèi)存大小,包括進程使用的庫、代碼、數(shù)據(jù)等
2、假如進程申請100m的內(nèi)存,但實際只使用了10m,那么它會增長100m,而不是實際的使用量
RES(resident memory usage)是進程所使用的物理內(nèi)存。實際實用內(nèi)存(ps中標為RSS)
RES:resident memory usage 常駐內(nèi)存
1、進程當前使用的內(nèi)存大小,但不包括swap out
2、包含其他進程的共享
3、如果申請100m的內(nèi)存,實際使用10m,它只增長10m,與VIRT相反
4、關(guān)于庫占用內(nèi)存的情況,它只統(tǒng)計加載的庫文件所占內(nèi)存大小
SHR共享內(nèi)存大小,單位kb
SHR:shared memory 共享內(nèi)存
1、除M了自身進程的共享內(nèi)存,也包括其他進程的共享內(nèi)存
2、雖然進程只使用了幾個共享庫的函數(shù),但它包含了整個共享庫的大小
3、計算某個進程所占的物理內(nèi)存大小公式:RES – SHR
4、swap out后,它將會降下來
S進程狀態(tài)。? ?? ?? ?? ?D=不可中斷的睡眠狀態(tài)? ?? ?? ?? ?R=運行中或可運行? ?? ?? ?? ?S=睡眠中? ?? ?? ?? ?T=已跟蹤/已停止? ?? ?? ?? ?Z=僵停
%CPU上次更新到現(xiàn)在的CPU時間占用百分比
%MEM進程使用的物理內(nèi)存百分比
TIME+進程使用的CPU時間總計,單位1/100秒
COMMAND命令名/命令行
top快捷鍵:
默認3s刷新一次,按s修改刷新時間
按空格:立即刷新。
q退出
P:按CPU排序
M:按內(nèi)存排序
T按時間排序
p: 進程IP,查看某個進程狀態(tài)
數(shù)字鍵1:顯示每個內(nèi)核的CPU使用率
u/U:指定顯示的用戶
h:幫助
lsof命令
lsof命令用于查看你進程打開的文件,打開文件的進程,進程打開的端口(TCP、UDP)
-i<條件>:列出符合條件的進程。(4、6、協(xié)議、:端口、@ip )
-p<進程號>:列出指定進程號所打開的文件;
[root@desktop-dcct8ee ~]# lsof -p 3178
COMMAND? PID USER? FD? TYPE? ? ? ? ? ? DEVICE? SIZE/OFF? ? NODE NAME
screen? 3178 root? cwd? ? DIR? ? ? ? ? ? ? 253,0? ? ? 208 33574977 /root
screen? 3178 root? rtd? ? DIR? ? ? ? ? ? ? 253,0? ? ? 224? ? ? 64 /
screen? 3178 root? ? 2w? CHR? ? ? ? ? ? ? ? 1,3? ? ? 0t0? ? 1028 /dev/null
screen? 3178 root? ? 4u? unix 0xffff9278b654f800? ? ? 0t0? ? 49598 /var/run/screen/S-root/3178.pts-2.desktop-dcct8ee
screen? 3178 root? ? 5u? REG? ? ? ? ? ? ? 0,20? ? ? 3072? ? 17681 /run/utmp
screen? 3178 root? ? 7u? CHR? ? ? ? ? ? ? 136,2? ? ? 0t0? ? ? ? 5 /dev/pts/2
[root@desktop-dcct8ee ~]# lsof -i :22
COMMAND? PID USER? FD? TYPE DEVICE SIZE/OFF NODE NAME
sshd? ? 961 root? ? 3u? IPv4? 17250? ? ? 0t0? TCP *:ssh (LISTEN)
sshd? ? 961 root? ? 4u? IPv6? 17252? ? ? 0t0? TCP *:ssh (LISTEN)
pstree工具使用
pstree工具是用于以樹形的形式查看進程
常用參數(shù)? -p? 指定顯示進程端口PID
[root@desktop-dcct8ee ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
? ? ? ? ├─VGAuthService
? ? ? ? ├─auditd───{auditd}
? ? ? ? ├─chronyd
? ? ? ? ├─systemd-udevd
? ? ? ? ├─tuned───4*[{tuned}]
? ? ? ? └─vmtoolsd───{vmtoolsd}
進程的優(yōu)先級
優(yōu)先級取值范圍為(-20,19),越小優(yōu)先級越高, 默認優(yōu)先級是0
命令1:nice ?指定程序的運行優(yōu)先級
格式:nice n command
命令2:renice ??改變程序的運行優(yōu)先級
格式:renice -n pid
例1:指定運行vim的優(yōu)先級為5
[root@desktop-dcct8ee ~]# nice -n 5 vim a.txt