查看LINUX進程內存占用情況


ps -aux命令詳解

 

https://blog.csdn.net/x_i_y_u_e/article/details/48463623

 

Linux ps aux指令詳解
 
linux上進程有5種狀態:
1. 運行(正在運行或在運行隊列中等待)
2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到信號)
3. 不可中斷(收到信號不喚醒和不可運行, 進程必須等待直到有中斷發生)
4. 僵死(進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用后釋放)
5. 停止(進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號后停止運行運行)
 
1)ps a 顯示現行終端機下的所有程序,包括其他用戶的程序。
2)ps -A 顯示所有程序。
3)ps c 列出程序時,顯示每個程序真正的指令名稱,而不包含路徑,參數或常駐服務的標示。
4)ps -e 此參數的效果和指定"A"參數相同。
5)ps e 列出程序時,顯示每個程序所使用的環境變量。
6)ps f 用ASCII字符顯示樹狀結構,表達程序間的相互關系。
7)ps -H 顯示樹狀結構,表示程序間的相互關系。
8)ps -N 顯示所有的程序,除了執行ps指令終端機下的程序之外。
9)ps s 采用程序信號的格式顯示程序狀況。
10)ps S 列出程序時,包括已中斷的子程序資料。
11)ps -t <終端機編號>  指定終端機編號,並列出屬於該終端機的程序的狀況。
12)ps u   以用戶為主的格式來顯示程序狀況。
13)ps x   顯示所有程序,不以終端機來區分。
14)ps -l 較長,較詳細的顯示該PID的信息
 
# ps -lA |more
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 76 0 - 1193 109952 ? 00:00:03 init
1 S 0 2 1 0 -40 - - 0 migrat ? 00:00:03 migration/0
1 S 0 3 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/0
1 S 0 4 1 0 -40 - - 0 migrat ? 00:00:02 migration/1
1 S 0 5 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/1
1 S 0 6 1 0 -40 - - 0 migrat ? 00:00:02 migration/2
1 S 0 7 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/2
 
相關信息的意義:
F 進程的標誌(flag),4表示用戶為超級用戶
S 進程的狀態(stat),各STAT的意義見下文
PID 進程的ID
C CPU使用資源的百分比
PRI priority(優先級)的縮寫,
NI Nice值,
ADDR 核心功能,指出該進程在內存的那一部分,如果是運行的進程,一般都是“-”
SZ 用掉的內存的大小
WCHAN 當前進程是否正在運行,若為“-”表示正在運行
TTY 登陸者的終端位置
TIME 用掉的CPU的時間
CMD 所執行的指令
 
# ps aux |more
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 4772 564 ? S Sep22 0:03 init [3]
root 2 0.0 0.0 0 0 ? S Sep22 0:03 [migration/0]
root 3 0.0 0.0 0 0 ? SN Sep22 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S Sep22 0:02 [migration/1]
root 5 0.0 0.0 0 0 ? SN Sep22 0:00 [ksoftirqd/1]
root 6 0.0 0.0 0 0 ? Ss+ Sep22 0:02 [migration/2]
root 7 0.0 0.0 0 0 ? SN Sep22 0:00 [ksoftirqd/2]
root 8 0.0 0.0 0 0 ? S Sep22 0:00 [migration/3]
root 9 0.0 0.0 0 0 ? SN Sep22 0:00 [ksoftirqd/3]
root 10 0.0 0.0 0 0 ? S< Sep22 0:00 [migration/4]
上述各位解釋:
USER 進程的屬主;
PID 進程的ID;
PPID 父進程;
%CPU 進程占用的CPU百分比;
%MEM 占用內存的百分比;
NI 進程的NICE值,數值大,表示較少占用CPU時間;
VSZ 進程使用的虛擬內存量(KB);
RSS 該進程占用的固定內存量(KB)(駐留中頁的數量);
TTY 該進程在那個終端上運行(登陸者的終端位置),若與終端無關,則顯示(?)。
若為pts/0等,則表示由網絡連接主機進程
WCHAN 當前進程是否正在進行,若為-表示正在進行;
START 該進程被觸發啟動時間;
TIME 該進程實際使用CPU運行的時間;
COMMAND 命令的名稱和參數;
STAT狀態位常見的狀態字符
D 無法中斷的休眠狀態(通常 IO 的進程);
R 正在運行可中在隊列中可過行的;
S 處於休眠狀態;
T 停止或被追蹤;
W 進入內存交換 (從內核2.6開始無效);
X 死掉的進程 (基本很少見);
Z 僵屍進程;
< 優先級高的進程
N 優先級較低的進程
L 有些頁被鎖進內存;
s 進程的領導者(在它之下有子進程);
l 多進程的(使用 CLONE_THREAD, 類似 NPTL pthreads);
+ 位於后台的進程組;
 
———————————————————————————————————————————————————————————————————————————————————————————— 

https://www.cnblogs.com/zxc2man/p/7458467.html

 

可以直接使用top命令后,查看%MEM的內容。可以選擇按進程查看或者按用戶查看,如想查看oracle用戶的進程內存使用情況的話可以使用如下的命令:

 (1)top

  top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似於Windows的任務管理器

  可以直接使用top命令后,查看%MEM的內容。可以選擇按進程查看或者按用戶查看,如想查看oracle用戶的進程內存使用情況的話可以使用如下的命令:   $ top -u oracle

內容解釋:

PID:進程的ID   

USER:進程所有者   

PR:進程的優先級別,越小越優先被執行   

NInice:值   

VIRT:進程占用的虛擬內存   

RES:進程占用的物理內存   

SHR:進程使用的共享內存   

S:進程的狀態。S表示休眠,R表示正在運行,Z表示僵死狀態,N表示該進程優先值為負數   

%CPU:進程占用CPU的使用率   

%MEM:進程使用的物理內存和總內存的百分比   

TIME+:該進程啟動后占用的總的CPU時間,即占用CPU使用時間的累加值。   

COMMAND:進程啟動命令名稱

  常用的命令:

  P:按%CPU使用率排行   T:按MITE+排行   M:按%MEM排行

(2)pmap

  可以根據進程查看進程相關信息占用的內存情況,(進程號可以通過ps查看)如下所示:   $ pmap -d 14596

 (3)ps

  如下例所示:   $ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid'  其中rsz是是實際內存   $ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep oracle |  sort -nrk5   其中rsz為實際內存,上例實現按內存排序,由大到小

 
分類:  mem
———————————————————————————————————————————————————————————————————————————————————————————
 

  Linux下查看某一個進程所占用的內存,首先可以通過ps命令找到進程id,比如 ps -ef | grep kafka 可以看到kafka這個程序的進程id

  

  可以看到是2913,現在可以使用如下命令查看內存:

top -p 2913

  

  這樣可以動態實時的看到CPU和內存的占用率,然后按q鍵回到命令行

  也可直接使用ps命令查看: ps -aux | grep kafka 

  

  第一個標注的地方是CPU和內存占用率,后面的943100是物理內存使用量,單位是k,此時kafka大約占用943M內存

  還可以查看進程的status文件: cat /proc/2913/status 

  

  VmRSS對應的值就是物理內存占用,大約為943M和剛才一致

  另外還可以通過 top 命令動態查看內存占用

  通過: ps aux | sort -k4,4nr | head -n 10 查看內存占用前10名的程序 

 
———————————————————————————————————————————————————————————————————————————————————————————
 

Linux下使用sort進行排序

 

https://blog.csdn.net/wade3015/article/details/92573738


sort:可以實現依據不同的數據類型進行排序,其語法及常用參數格式如下:

sort [-bcfMnrtk][源文件][-o 輸出文件]
補充說明:sort可針對文本文件的內容,以行為單位來排序。
參  數:
-b 忽略每行前面開始出的空格字符。
-c 檢查文件是否已經按照順序排序。
-f 排序時,忽略大小寫字母。
-M 將前面3個字母依照月份的縮寫進行排序。
-n 依照數值的大小排序。
-o<輸出文件> 將排序后的結果存入指定的文件。
-r 以相反的順序來排序。
-t<分隔字符> 指定排序時所用的欄位分隔字符。
-k 選擇以哪個區間進行排序。
1 sort的工作原理

sort將文件的每一行作為一個單位,相互比較,比較原則是從首字符向后,依次按ASCII碼值進行比較,最后將他們按升序輸出。

[root@gitlab ~]$ cat seq.txt
banana
apple
pear
orange
pear
[root@gitlab ~]$ sort seq.txt
apple
banana
orange
pear
pear
2 sort的-u選項

它的作用很簡單,就是在輸出行中去除重復行。

[root@gitlab ~]$ sort -u seq.txt
apple
banana
orange
pear
pear由於重復被-u選項無情的刪除了。

3 sort的-r選項

[root@gitlab ~]$ cat number.txt
1
3
5
7
11
2
4
6
10
8
9
[root@gitlab ~]$ sort number.txt  --sort默認的排序方式是升序
1
10
11
2
3
4
5
6
7
8
9
[root@gitlab ~]$ sort -n number.txt      --排序程序將這些數字按字符來排序了,排序程序會先比較1和2,顯然1小,所以就將10放在2前面
1
2
3
4
5
6
7
8
9
10
11
[root@gitlab ~]$ sort -n -r number.txt     --r表示降序,n表示按數字進行排序
11
10
9
8
7
6
5
4
3
2
1
4 sort的-o選項

由於sort默認是把結果輸出到標准輸出,所以需要用重定向才能將結果寫入文件,形如sort filename > newfile。

但是,如果你想把排序結果輸出到原文件中,用重定向就需要使用追加的方式。

[root@gitlab ~]$ sort -n -r number.txt > number.txt
[root@gitlab ~]$ cat number.txt
[root@gitlab ~]$
number清空了。所以我們需要使用-o選項,它成功的解決了這個問題,讓你放心的將結果寫入原文件。這或許也是-o比重定向的唯一優勢所在。

[root@gitlab ~]$ sort -n -r number.txt -o number.txt
[root@gitlab ~]$ cat number.txt
11
10
9
8
7
6
5
4
3
2
1
5 sort的-t選項和-k選項

[root@gitlab ~]$ cat facebook.txt
banana:30:5.5
apple:10:2.5
pear:90:2.3
orange:20:3.4
[root@gitlab ~]$ sort -n -k 2 -t : facebook.txt
apple:10:2.5
orange:20:3.4
banana:30:5.5
pear:90:2.3
這個文件有三列,列與列之間用冒號隔開了,第一列表示水果類型,第二列表示水果數量,第三列表示水果價格。那么我想以水果數量來排序,也就是以第二列來排序,如何利用sort實現?幸好,sort提供了-t選項,后面可以設定間隔符。(是不是想起了cut和paste的-d選項,共鳴~~)

指定了間隔符之后,就可以用-k來指定列數了。我們使用冒號作為間隔符,並針對第二列來進行數值升序排序,結果很令人滿意。

6 其他的sort常用選項

-f會將小寫字母都轉換為大寫字母來進行比較,亦即忽略大小寫

-c會檢查文件是否已排好序,如果亂序,則輸出第一個亂序的行的相關信息,最后返回1

-C會檢查文件是否已排好序,如果亂序,不輸出內容,僅返回1

-M會以月份來排序,比如JAN小於FEB等等

-b會忽略每一行前面的所有空白部分,從第一個可見字符開始比較。
________________________________________________________________________________________________________________________

 

linux sort命令用法

 

sort命令:用於將文本文件內容加以排序,sort可針對文本文件的內容,以行為單位來排序。

命令格式:

sort [-bcdfimMnr][-o<輸出文件>][-t<分隔字符>][+<起始欄位>-<結束欄位>][--help][--verison][文件]

常見參數:

  • -b 忽略每行前面開始出的空格字符。
  • -c 檢查文件是否已經按照順序排序。
  • -d 排序時,處理英文字母、數字及空格字符外,忽略其他的字符。只考慮空格、字母和數字
  • -f 排序時,將小寫字母視為大寫字母。
  • -i 排序時,除了040至176之間的ASCII字符外,忽略其他的字符。只考慮可打印字符。
  • -m 將幾個排序好的文件進行合並。
  • -M 將前面3個字母依照月份的縮寫進行排序。
  • -n 依照數值的大小排序;對指定的列進行排序,+0表示第一列,以空格或制表符作為列的間隔符。
  • -o<輸出文件> 將排序后的結果存入指定的文件。
  • -u 去重,配合-c,嚴格校驗排序;不配合-c,則只輸出一次排序結果,一般用uniq代替。
  • -r 倒序(降序)以相反的順序來排序。
  • -t<分隔字符> 指定排序時所用的欄位分隔字符。例如:-t. 表示按點號分隔域,類似於awk -F或cut -d
  • -k指定第幾列或第幾列的第幾個字符。與-t配合使用
  • +<起始欄位>-<結束欄位> 以指定的欄位來排序,范圍由起始欄位到結束欄位的前一欄位。
  • --help 顯示幫助。
  • --version 顯示版本信息。

測試:

去重:

復制代碼
[root@bqh-118 ~]# cat qc.log 
192.168.43.117
192.168.43.119
192.168.43.118
192.168.43.118
192.168.43.117
192.168.43.117
192.168.43.119
192.168.43.110
[root@bqh-118 ~]# sort -u qc.log 
192.168.43.110
192.168.43.117
192.168.43.118
192.168.43.119
復制代碼

注:-u,一般用uniq代替。

去重+降序(倒序)排序:

[root@bqh-118 ~]# sort -ur qc.log 
192.168.43.119
192.168.43.118
192.168.43.117
192.168.43.110

按數字排序:

復制代碼
[root@bqh-118 ~]# sort -n qc.log 
192.168.43.110
192.168.43.117
192.168.43.117
192.168.43.117
192.168.43.118
192.168.43.118
192.168.43.119
192.168.43.119
復制代碼

注:默認為升序。

按數字倒序排序

復制代碼
[root@bqh-118 ~]# sort -r qc.log 
192.168.43.119
192.168.43.119
192.168.43.118
192.168.43.118
192.168.43.117
192.168.43.117
192.168.43.117
192.168.43.110
復制代碼

指定分隔符排序:按對應的列排序

-k, --key=pos1[pos2]

  start a key at pos1 (orign 1), end it at pos2 (default end of line)

1. 默認按整行排序。

2. -t指定分隔符,-k1,分隔符之后的第一列排序

3. -k 1,1  用逗號來分隔字段,表示第一個字段開始排序到第一個字段結束

4. -k 1.1,3.3  用點分隔字符。表示第一個字段的第一個字符開始排序到第三個字段的第三個字符結束。

復制代碼
[root@bqh-118 ~]# cat  qc3.log 
192.168.43.117 a
192.168.43.119 d
192.168.43.118 z
192.168.43.118 n
192.168.43.117 o
192.168.43.117 m
192.168.43.119 k
192.168.43.110 l
[root@bqh-118 ~]# sort -t" " -k2 qc3.log 
192.168.43.117 a
192.168.43.119 d
192.168.43.119 k
192.168.43.110 l
192.168.43.117 m
192.168.43.118 n
192.168.43.117 o
192.168.43.118 z

[root@bqh-118 ~]# sort -k2 qc3.log 
  192.168.43.117 a
  192.168.43.119 d
  192.168.43.119 k
  192.168.43.110 l
  192.168.43.117 m
  192.168.43.118 n
  192.168.43.117 o
  192.168.43.118 z

復制代碼

注:分隔符默認為空格,-t可省略,所有上邊命令可以sort  -k2 qc3.log

復制代碼
[root@bqh-118 ~]# cat qc4.log
192.168.0.1 00:OF:AF:45:4C:78
192.168.0.71 00:OF:1AF:45:4C:76
192.168.0.16 00:OF:KF:55:S6:25
192.168.0.99 00:LF:9F:R5:IC:27
192.168.0.91 00:OF:H6:45:A1:67
192.168.0.65 00:O1:W3:45:49:94
192.168.0.89 00:OF:A8:33:V5:90
192.168.0.31 00:90:32:J9:1L:14
192.168.0.19 00:OF:76:29:30:DF
192.168.0.177 00:OF:12:09:P9:41
192.168.0.121 00:YF:A2:U7:4O:RT
192.168.0.253 00:OF:SD:40:J3:19
192.168.0.51 00:II:V5:39:47:OI
192.168.0.46 00:OF:A3:81:D3:1Y
192.168.0.7 00:OI:W1:IW:H7:B1
192.168.0.189 00:OF:S5:00:12:70
192.168.0.155 00:OY:TF:4Q:46:8M
[root@bqh-118 ~]# sort -t. -k4,4nr qc4.log   #從第4個字段開始排序,到第4個字段結束排序,按數字降序
192.168.0.253 00:OF:SD:40:J3:19
192.168.0.189 00:OF:S5:00:12:70
192.168.0.177 00:OF:12:09:P9:41
192.168.0.155 00:OY:TF:4Q:46:8M
192.168.0.121 00:YF:A2:U7:4O:RT
192.168.0.99 00:LF:9F:R5:IC:27
192.168.0.91 00:OF:H6:45:A1:67
192.168.0.89 00:OF:A8:33:V5:90
192.168.0.71 00:OF:1AF:45:4C:76
192.168.0.65 00:O1:W3:45:49:94
192.168.0.51 00:II:V5:39:47:OI
192.168.0.46 00:OF:A3:81:D3:1Y
192.168.0.31 00:90:32:J9:1L:14
192.168.0.19 00:OF:76:29:30:DF
192.168.0.16 00:OF:KF:55:S6:25
192.168.0.7 00:OI:W1:IW:H7:B1
192.168.0.1 00:OF:AF:45:4C:78
[root@bqh-118 ~]# sort -t. -k3.1,4.1nr qc4.log  #從第三個字段第一個字符排序,到第四個字段第一個字符結束,按數字降序
192.168.0.91 00:OF:H6:45:A1:67
192.168.0.99 00:LF:9F:R5:IC:27
192.168.0.89 00:OF:A8:33:V5:90
192.168.0.7 00:OI:W1:IW:H7:B1
192.168.0.71 00:OF:1AF:45:4C:76
192.168.0.65 00:O1:W3:45:49:94
192.168.0.51 00:II:V5:39:47:OI
192.168.0.46 00:OF:A3:81:D3:1Y
192.168.0.31 00:90:32:J9:1L:14
192.168.0.253 00:OF:SD:40:J3:19
192.168.0.1 00:OF:AF:45:4C:78
192.168.0.121 00:YF:A2:U7:4O:RT
192.168.0.155 00:OY:TF:4Q:46:8M
192.168.0.16 00:OF:KF:55:S6:25
192.168.0.177 00:OF:12:09:P9:41
192.168.0.189 00:OF:S5:00:12:70
192.168.0.19 00:OF:76:29:30:DF
復制代碼


 

 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM