它決定了系統能夠同時運行多少應用程序,以及這些應用程序的運行效率
對于Linux系統管理員和高級用戶來說,了解并熟練使用Linux內存管理命令是優化系統性能、排查內存泄漏和確保系統穩定性的必備技能
本文將詳細介紹一系列強大的Linux內存管理命令,并解釋如何通過它們來監控、分析和優化系統內存使用
一、基礎內存查看命令 1. free 命令 `free` 命令是最簡單、最常用的內存查看工具之一
它顯示系統的總內存、已用內存、空閑內存以及交換空間的使用情況
通過添加`-h` 參數,可以以人類可讀的格式(如KB、MB、GB)顯示信息
free -h 輸出示例: total used free shared buff/cache available Mem: 7.8G 3.5G 1.5G 512M 2.8G 3.9G Swap: 2.0G 12M 2.0G 2. top 命令 `top` 命令是一個實時系統監視工具,它不僅顯示CPU使用情況,還包括內存使用情況的動態更新
在`top`界面中,`KiB Mem`行顯示了物理內存的使用情況,`KiB Swap`行則顯示了交換空間的使用情況
top 在`top`界面中,你可以按`Shift + M`鍵來根據內存使用情況對進程進行排序,這有助于快速識別內存占用最多的進程
3. htop 命令 `htop`是`top`命令的增強版,提供了更友好的用戶界面和更多功能
它通常不是默認安裝的,但可以通過包管理器輕松安裝
`htop`允許你通過鼠標和鍵盤快捷鍵來交互地管理進程,包括結束進程、調整優先級等
sudo apt-get install htop 對于Debian/Ubuntu系統 htop 二、深入內存診斷與分析 1. vmstat 命令 `vmstat`(Virtual Memory Statistics)命令提供了關于系統進程、內存、分頁、塊IO、陷阱和CPU活動的詳細信息
它對于理解系統整體性能非常有用
vmstat 1 5 上述命令每秒更新一次,共更新五次
關鍵字段包括: - `si`(每秒從交換空間換入的內存量) - `so`(每秒換出到交換空間的內存量) - `bi`(每秒從塊設備讀取的數據量) - `bo`(每秒寫入塊設備的數據量) 2. smem 命令 `smem`(Shared Memory Report)是一個專門用于報告內存使用情況的工具,它考慮了共享內存的影響,提供了比`free`或`top`更準確的內存使用信息
sudo apt-get install smem 對于Debian/Ubuntu系統 smem -r -s rss= -k `-r` 參數表示遞歸報告,`-s` 參數用于指定排序字段,`rss=` 表示按實際駐留集大小排序,`-k` 參數表示以KB為單位顯示
3. pmap 命令 `pmap` 命令顯示進程的內存映射
它對于分析特定進程的內存使用情況非常有用
pmap -x ="" 三、內存優化與故障排查="" 1.="" sync="" 和="" `echo="" 3=""> /proc/sys/vm/drop_caches`
雖然這不是直接管理內存的命令,但在某些情況下,清除內核緩存可以釋放內存,特別是在你懷疑內存被緩存大量占用時 注意,這會暫時影響系統性能,因為緩存需要重新構建
sync; echo 3 > /proc/sys/vm/drop_caches
- `sync` 命令將所有未寫入磁盤的緩存數據寫入磁盤
- `echo 3 > /proc/sys/vm/drop_caches` 命令清除頁面緩存、回收slab對象和inode緩存
2. ulimit 命令
`ulimit` 命令用于控制shell進程及其啟動的子進程可以使用的資源量,包括內存
ulimit -v