更多描述: 在編寫腳本時,有時會出現內存過大發生 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
總結
簡而言之,有以下三個命令
pidstat -r
htop/top -p
ps -O rss -p
關於更多指標的監控可以參考我的文章: linux 各項監控指標小記