我试图创建一个脚本,显示mysqld的每个进程和子进程使用了多少。你可以在我的代码中看到我做了什么。
#!/bin/bash
#file contains the output of: pstree mysql -a -p |awk '{print $1;}' | sed 's/|- {mysqld},//' >> psadd
filename='psadd'
#total= '0'
echo Start
while read p; do
memU= cat /proc/$p/smaps |grep -e Private -e Shared |awk '{print $2}' |awk '{total = total + $1}END{print total}'
echo "Process ID:"$p "Memory Usage:"$memU
total="$((total+memu))"
echo "This is the current running total:" $total
done < $filename
echo "Total=" $total
如果您有任何想法,请不要错过。
答案 0 :(得分:1)
计算进程内存使用量是...... complicated。我通常使用proc的RSS - Resident Set Size - 进程在内存中保存的内存量,不被其他进程共享。
以下查找MySQL守护程序的进程ID,并使用ps
输出没有标头的RSS值。最后,它将此乘以4以获得KiB中的RSS大小。 (默认页面大小为4 KiB。)
ps有大量的信息 - 玩得开心!
ps -o rss= -p `pidof mysqld` | awk '{print $1*4, "KiB"}'
7808 KiB