進程相關命令的使用

ps, top, htop,  vmstat, dstat,pstree,pidof, pgrep緩存


在htop默認沒有添加字段的狀況下。
bash


ps top htop
常駐內存 rss,  rsz,  rssize

線性內存 vsz,  vsize VIRT VIRT
進程佔用CPU %cpu %CPU CPU%
進程狀態 state,  S S S
物理內存使用
%mem,RES MEM%,  RES
共享內享
SHR SHR
進程已使用CPU時長 time,  cputime TIME+ TIME+
進程優先級
PR PR
nice值
NI NI


ps 服務器

詳細信息請看這裏:http://www-01.ibm.com/support/knowledgecenter/ssw_aix_71/com.ibm.aix.cmds4/ps.htm?lang=zh網絡


經過/proc/PID/(內核中進程狀態信息)統計的各類信息;
report a snapshot of the current processes.
ps [options]:
    選項有三種風格:
        1   UNIX options, which may be grouped and must be preceded by a dash. 帶-session

        2   BSD options, which may be grouped and must not be used with a dash. 不帶-多線程

        3   GNU long options, which are preceded by two dashes. 長格式--app


啓動進程的方式:
        系統啓動過程當中自動啓動:與終端無關的進程;
        用戶經過終端啓動:與終端相關的進程;less


第一種風格:
選項:
        a:全部與終端相關的進程;
        x:全部與終端無關的進程;
        u:以用戶爲中心組織進程狀態信息顯示;
ssh

經常使用組合之一:auxsocket

[root@localhost yum.repos.d]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.6  58848  6800 ?        Ss   11:04   0:04 /usr/lib/systemd/systemd --switched-root 
root          2  0.0  0.0      0     0 ?        S    11:04   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    11:04   0:04 [ksoftirqd/0]
.....
root       1184  0.0  0.2  84584  2252 ?        Ss   11:05   0:00 login -- root
root       4066  0.0  0.3  82488  3588 ?        Ss   21:07   0:00 /usr/sbin/sshd -D

帶中括號的都是內核級進程,不帶的是用戶空間程序。

PID: 進程ID。

%CPU: 所佔CPU。

%MEM: 所佔內存。

VSZ:Virtual Memory Size 虛擬內存集,又稱線性內存空間,至關因而top中的VIRT。 單位kb。
RSS:Resident Size,常駐內存集;不能被交換到swap中的數據所佔大小。

STAT:
       R:running,運行狀態。
       S:interruptable sleeping,可中斷睡眠,等待某些條件爲真。

       D:uninterruptable sleeping,不可中斷睡眠

       T:Stopped,暫停狀態,用戶可喚醒。如ctrl+z的進程。
       Z:zombie,程序執行完畢已終止,而父進程尚未來得及回收的這段時間。

       +:前臺進程
        l:多線程進程
        N:低優先級進程
        <:高優先級進程
         s:session leader 會話主進程               

START: 進程啓動時的時間

TIME:進程佔用CPU的時間,也就是已運行時間。


第二種風格:

        -e:顯示全部進程
        -f:顯示完整格式的進程信息     
經常使用組合之二:-ef

[root@localhost yum.repos.d]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 11:04 ?        00:00:04 /usr/lib/systemd/systemd --switched-root --system --deser
root          2      0  0 11:04 ?        00:00:00 [kthreadd]
root      11705   4234 98 22:05 pts/1    00:00:48 dd if=/dev/zero of=/dev/null

PPID: 父進程ID.

C: cpu utilization CPU使用率

STIME: 進程啓動時的時間

TTY: 終端

TIME: 進程運行時長,佔用CPU時長。



經常使用組合之三:-eFH

        -F:顯示額外信息;
        -H:以層級結構顯示進程的相關信息;

[root@localhost grub2]# ps -eFH | grep -E '(sshd|PPID)' 
UID         PID   PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root       1149      1  0 20622  3612   0 17:39 ?        00:00:00   /usr/sbin/sshd -D
root      13397   1149  0 33837  4936   1 20:11 ?        00:00:00     sshd: root@pts/7
root      13398   1149  0 33837  4928   0 20:11 ?        00:00:02     sshd: root@pts/5
root      13917  13410  0 28160   972   1 23:14 pts/5    00:00:00         grep --color=auto -E (sshd|PPID)
root      13399   1149  0 33803  4936   1 20:11 ?        00:00:00     sshd: root@pts/4
root      13403   1149  0 33837  4932   1 20:11 ?        00:00:01     sshd: root@pts/6

SZ: 進程的核心映像大小

RSS: 常駐內存。

PSR:運行於哪顆CPU之上


經常使用組合之四:-eo, axo

-o:自定義顯示的字段,以逗號分隔

字段的名稱能夠在man ps的STANDARD FORMAT SPECIFIERS段中找到。


經常使用的field:pid, ni, priority, psr, pcpu, stat, comm, tty, ppid, rtprio
ni:nice值;
priority:priority, 優先級;
rtprio:real time priority,實時優先級;

pcpu表示%cpu。pmem表示%mem

[root@localhost grub2]# ps axo pid,ppid,%cpu,%mem,stat,priority,rtprio,ni,psr,command | grep -E "(sshd|PID.*PPID)" 
   PID   PPID %CPU %MEM STAT PRI RTPRIO  NI PSR COMMAND
  1149      1  0.0  0.3 Ss    20      -   0   0 /usr/sbin/sshd -D
 13397   1149  0.0  0.4 Ss    20      -   0   1 sshd: root@pts/7
 13398   1149  0.0  0.4 Ss    20      -   0   1 sshd: root@pts/5
 13399   1149  0.0  0.4 Ss    20      -   0   1 sshd: root@pts/4
 13403   1149  0.0  0.4 Ss    20      -   0   1 sshd: root@pts/6
 13921  13410  0.0  0.0 S+    20      -   0   1 grep --color=auto -E (sshd|PID.*PPID)

 

cpu百分比: %cpu,pcpu,C

內存百分比:%mem,pmem

nice值:ni,nice

常駐內存:rss,rsz,rssize

用戶ID:uid,euid

用戶:uname,user,euser.

虛擬內存/線性內存:vsz,vsize

進程佔用CPU時間:time,cputime

進程狀態:state,S



top
                - display Linux processes

wKiom1aGLhKwf5J3AACn_yJSHZo256.jpg


第一行:當前時間,系統已運行時間, 登陸用戶, 最近1分鐘,5分鐘,15分鐘的負載(等待CPU的進程隊列)。

第二行:進程總數,正在運行的,睡眠的,暫停的,僵死的。

第三行:用戶空間cpu佔用,系統空間CPU佔用,nice調整過的,空閒百分比,等待I/O的,硬中斷,軟中斷,被偷有的(虛擬化佔用的)

第四行:總內存,空閒的,使用的,buff/cache佔用的。

第五行:總swap,空閒的swap,使用的swap。可分配物理內存

PR: 優先級

NI: NICE值

VIRT: 線性地址空間

RES:物理內存使用

SHR: 共享內存使用(共享庫類佔用)

S: 狀態

 

排序:
P:以佔據CPU百分比排序;
M:以佔據內存百分比排序;
T:累積佔用CPU時間排序;
                   
首部信息:
uptime信息:l命令
tasks及cpu信息:t命令
內存信息:m命令
                    
退出命令:q
修改刷新時間間隔:s
終止指定的進程:k
               
選項:
-d #:指定刷新時間間隔,默認爲3秒;
-b:以批次方式顯示;
-n #:顯示多少批次;
               
           

uptime

顯示系統時間、運行時長及平均負載;過去1分鐘、5分鐘和15分鐘的平均負載;等待運行的進程隊列的長度;

 

htop

選項:
-d #:指定延遲時間間隔;
-u UserName:僅顯示指定用戶的進程;
-s COLUME:以指定字段進行排序;
子命令:
l:顯示選定的進程打開的文件列表;
s:跟蹤選定的進程的系統調用;
t:以層級關係顯示各進程狀態;
a:將選定的進程綁定至某指定的CPU核心;

u 選擇指定用戶的進程
# 能夠直接按數字來指定到進程。

wKiom1aGLoeSwtIEAAEhC67t4es799.jpg

進程部分默認不顯示kernel進程,因此與top的不同。其它字段意義同樣。

F2能夠調整各顯示。F3搜索,F4過濾。

wKioL1aGLsqw2L5dAAFGQ0wOI7w763.jpg

PRI: 優先級

VIRT: 佔用的虛擬內存(線性內存)

RES: 物理內存佔用

SHR: 共享內存佔用

S: 狀態


vmstat
       -s 內存統計信息

wKiom1aGLtTzkWmLAABUSS1VXec555.jpg

r 運行或等待CPU時間片的進程個數
b 被阻塞(一般爲等待IO完成)的進程隊列的長度     

swpd  從物理內存交換至swap中的數據量,是已佔用的空間。 而不是速率。
free  空閒的物理內存


buffer  buffer大小,一般與緩存寫操做有關
cache   cache大小, 一般緩存的都是page頁面文件 與緩存讀操做有關。
       

si : swap in 數據進入swap中的數據量, 一般是速率,kb/s
so : swap out 數據離開swap的數據量。


bi : block in 從塊設備讀入內存的數據量,速率kb/s
bo : block out 保存至塊設備的數據量, 速率kb/s


in : interrupts  中斷, 每秒中斷數
cs : context switch, 上下文切換,也就是進程切換, 每秒切換次數。


上下文切換 幾百上千仍是正常的。  上萬就表示CPU弱,任務多。
軟中斷是指系統調用,從用戶空間切換到內核空間。 不是指上下文切換。
任何從用戶模式轉到內核模式的都是經過軟中斷的方式進行的。
任何硬件級別的一些事件的通知是經過硬中斷進行的。

在網絡服務器上,中斷是比較高的。
任何一個網絡數據報到達主機時,都會發生一個硬中斷。
任何一個磁盤I/O發生時,也會發生硬中斷。


us: 用戶空間佔用

sy: 內核空間佔用

id: 空閒

wa: 等待I/O的進程佔用

st: 被偷有的(虛擬化佔用)



dstat
- versatile tool for generating system resource statistics

wKiom1aGMTPj4J1fAABQU3CCwcg241.jpg

cpu:
usr:  用戶空間使用
sys:  系統使用
idl:  空閒的
wai:  等待I/O
hiq:  硬中斷隊列
siq:  軟中斷隊列


system:
int: 硬中斷數量
csw: 上下文切換數量


dstat [-afv] [options..] [delay [count]]

經常使用選項:
-c, --cpu:顯示cpu相關信息;
-C #,#,...,total,包含的CPU
-d, --disk:顯示磁盤的相關信息
-D sda,sdb,...,tobal 包含的磁盤
-g:顯示page相關的速率數據;
-m:Memory的相關統計數據
-n:Interface的相關統計數據;
-p:顯示process的相關統計數據;
-r:顯示io請求的相關的統計數據;
-s:顯示swapped的相關統計數據;

--tcp
--udp
--raw
--socket
--ipc
--top-cpu:顯示最佔用CPU的進程;
--top-io:最佔用io的進程;
--top-mem:最佔用內存的進程;
--top-lantency:延遲最大的進程;

選項能夠在dstat -h 中查看。


pstree
            pstree  - display a tree of processes

[root@localhost test]# pstree
systemd─┬─NetworkManager─┬─2*[dhclient]
        │                └─3*[{NetworkManager}]
        ├─abrt-watch-log
        ├─abrtd
        ├─agetty
        ├─alsactl
        ├─atd
        ├─auditd─┬─audispd─┬─sedispatch
        │        │         └─{audispd}
        │        └─{auditd}
        ├─chronyd
        ├─dbus-daemon───{dbus-daemon}
        ├─irqbalance
        ├─lsmd
        ├─lvmetad
        ├─master─┬─bounce
        │        ├─pickup
        │        ├─qmgr
        │        └─smtp
        ├─polkitd───5*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─smartd
        ├─sshd─┬─sshd───bash───pstree
        │      ├─sshd───bash───man───less
        │      └─sshd───bash
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        └─tuned───4*[{tuned}]
[root@localhost test]#


pidof

        pidof -- find the process ID of a running program.

[root@localhost test]# pidof crond sshd
1179 3211 3125 2937 1168
[root@localhost test]# pidof -s crond sshd
1179 3211
[root@localhost test]#

pgrep,pkill

look up or signal processes based on name and other attributes

能夠通符查找進程。下邊的less是由於在一個ssh終端中執行man。

[root@localhost test]# pgrep ssh* -a
1168 /usr/sbin/sshd -D
2937 sshd: root@pts/1    
3125 sshd: root@pts/0    
3211 sshd: root@pts/2    
3810 less -s
[root@localhost test]#
[root@localhost test]# pkill sshd

pgrep [options] pattern
-u uid:effective user
-U uid:read user
-t  TERMINAL:與指定的終端相關的進程;
-l:顯示進程名;
-a:顯示完整格式的進程名;
-P pid:顯示此進程的子進程;


j_0022.gif我是來打醬油的,有問題還請指出。謝謝了。j_0075.gif

相關文章
相關標籤/搜索