如何獲取一個進程的內存並監控


更多描述: 在編寫腳本時,有時會出現內存過大發生 OOM 的事情,那我們如何得知某個進程的內存?另外又如何監控它

通過 ps 可以獲知一個進程所占用的內存

$ ps -O rss -p 3506
  PID   RSS S TTY          TIME COMMAND
 3506  6984 S pts/1    00:00:00 vim

如果要監控內存,肯定使用對進程萬能的命令 pidstat (PS: 這名字一聽就知道是干嘛的)

## -r 顯示內存信息
## -p 指定 pid
## 1: 每個一秒打印一次
$ pidstat -r -p 3506 1
Linux 3.10.0-957.21.3.el7.x86_64 (shanyue)      11/04/19        _x86_64_        (2 CPU)

20:47:35      UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
20:47:36        0      3506      0.00      0.00  139940   6984   0.18  vim
20:47:37        0      3506      0.00      0.00  139940   6984   0.18  vim
20:47:38        0      3506      0.00      0.00  139940   6984   0.18  vim
20:47:39        0      3506      0.00      0.00  139940   6984   0.18  vim
20:47:40        0      3506      0.00      0.00  139940   6984   0.18  vim
20:47:41        0      3506      0.00      0.00  139940   6984   0.18  vim

pidstat 是屬於 sysstat 下的 linux 性能工具,但在 mac 中,如何定位內存的變化?此時可以使用萬能的 top/htop

$ htop -p 31796

 

 

總結

簡而言之,有以下三個命令

  1. pidstat -r
  2. htop/top -p
  3. ps -O rss -p

關於更多指標的監控可以參考我的文章: linux 各項監控指標小記

 
       


免責聲明!

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



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