占用内存\cpu排序命令参考
什么情况会用到呢?
内存占用过多时,cpu占用过多时,需要查看到底是什么进程任务占用了资源,考虑是否需要kill相应进程以释放cpu或内存资源,从而保障系统的正常运行。
查看正在运行的进程内存、swap占用
pidstat -r 1

运行top命令后,键入大写M则按mem排序。按P按CPU排序。按c显示命令的详细信息。
内存排序参考:
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +5|head -20
cpu排序参考:
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head -20
cpu获取pid
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head -20 | awk '{print$2}'
top内存排序:


top cpu排序:

top命令查看多核cpu占用:
top然后按1即可显示:

查看swap:
方法1:
for i in $( cd /proc;ls |grep "^[0-9]"|awk ' $0 >100') ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps 2>/dev/null ; done | sort -k2nr | head -10

方法2:
printf "%-20s\t%10s\t%-s\n" "PID" "Swap" "Proc_Name"
echo -e '------------------\t------------\t---------------------------'
for pid in `ls -l /proc | grep ^d | awk '{ print $9 }'| grep -v [^0-9]|grep -v 1$`
do
if [ -f /proc/"$pid"/smaps ]; then
swap=$(grep Swap /proc/$pid/smaps | gawk '{ sum+=$2;} END{ print sum }')
swap=${swap:=0} # if swap's values is null then set swap=0
fi
proc_name=$(ps aux | grep -w "$pid" | grep -v grep | awk '{ for(i=11;i<=NF;i++){ printf("%s ",$i); }}')
if [ "$swap" -gt 0 ];then
echo -e "$pid\t${swap}\t$proc_name"
fi
done | sort -k2 -n | gawk -F'\t' '{
pid[NR]=$1;
size[NR]=$2;
name[NR]=$3;
}
END{
for(id=1;id<=length(pid);id++)
{
if(size[id]<1024)
printf("%-10s\t%15sKB\t%s\n",pid[id],size[id],name[id]);
else if(size[id]<1048576)
printf("%-10s\t%15.2fMB\t%s\n",pid[id],size[id]/1024,name[id]);
else
printf("%-10s\t%15.2fGB\t%s\n",pid[id],size[id]/1048576,name[id]);
}
}'

方法3:
top
小f 按p把swap加进选项里
任意键退出
大F 排序选swap
最后修改时间:2024-02-22 10:34:52
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。





