Linux下實現指令碼監測特定程序占用記憶體情況

2021-07-26 23:50:58 字數 1048 閱讀 6953

記憶體洩露是c/c++程式設計師經常需要面對的問題,除了有效地經常查詢出記憶體洩露的位置外,在嵌入式的開發中,還經常需要確定自己寫的程式是否存在記憶體洩露的情況

linux系統下,我們可以利用以下命令來獲取特定程序的運**況:

cat /proc/$pid/status

其中pid是具體的程序號,這個命令列印出/proc/特定程序/status檔案的內容,資訊比較多,包含了物理記憶體/虛擬記憶體的使用狀況,監控程序是否有記憶體洩露的問題,一般檢視程序占用物理記憶體的情況:

vmrss: ***kb

可以採用grep命令過濾出我們需要的資訊:

cat /proc/$pid/status | grep rss >> "$log"

#過濾包含rss的行,並且重定向到引數log表示的檔案

由於pid號需要通過程序名獲取,同樣使用grep命令過濾出我們指定程序的程序號:

ps | grep

$process | grep -v 'grep' | awk ''

#$process表示程序名字

再設定乙個迴圈,每十秒獲取一次資訊並寫入指定檔案,完整的指令碼如下:

#!/bin/bash

process=程序名

log="/mnt/memlog.txt"

sleep 10

#刪除上次的監控檔案

if [ -f

"$log" ];then

rm "$log"

fi#過濾出需要的程序id

pid=$(ps | grep $process | grep -v 'grep' | awk '')

while [ "$pid" != "" ]

do cat /proc/$pid/status | grep rss >> "$log"

#過濾出vmrss行

sleep 5

pid=$(ps | grep $process | grep -v 'grep' | awk '')

done

Shell指令碼實現的memcached程序監控

web伺服器使用memcached,但是不知道為什麼memcached老是掛掉 基本20分鐘 50分鐘左右 導致部分 頁面在訪問的時候出錯 定義日誌後,檢視日誌也未能發現什麼 初步判定由於之前更新libevent有關係。由於線上伺服器,所以先用指令碼來程式設計客棧彌補下 bin sh pid ps ...

Linux下shell指令碼實現管理ssh鏈結

sudo apt install expect該檔案用來儲存使用者的ssh鏈結資訊 新建檔案password.lst,然後新增如下內容 序號 ip 埠 使用者 密碼 說明 1 123.56.10.38 22 username password 阿里雲測試伺服器 2 192.168.88.130 22...

LINUX下磁碟IO效能監測分析

linux下磁碟io效能監測分析 2011 08 16 18 10 23 標籤 效能監測分析 linux 磁碟io 休閒suse linux 這兩天發現一台測試用的伺服器經常負載很高,但cpu和記憶體消耗卻很少,很是奇怪,經過診斷發現是由於大容量的測試資料導致高併發下的磁碟io消耗比較大,由於快取是...