Linux 内存使用情况查看命令

PU load = 处于cpu运行队列中正在运行的任务数量+  Interruptible Sleep的处于cpu等待队列中的任务数
 
cpu load 高非常有可能是  Interruptible Sleep的任务数偏多,用下列命令可以check处于 Interruptible Sleep 的任务数量:
 
top -b -n 1 | awk '{if (NR <=7) print; else if ($8 == "D") {print; count++} } END {print "Total status D: "count}'

查看内存:free

             total       used       free     shared    buffers     cached

Mem:       8126976    7609376     517600          0     447392    1268632

-/+ buffers/cache:    5893352    2233624

Swap:      2928636     572388    2356248

 

top查看进程,shift+f可以设置排序顺序,如果按照RES排序,可以保证清晰的查看到系统占用内存较大的线程。

查看httped的进程的内存总量: (ps aux|grep -v grep|awk '/httpd/{sum+=$6;n++};END{print sum}')

ps:查看进程情况, 一般使用ps -ef, ps -aux

- A  :所有的 process 均显示出来,与 -e 具有同样的效用;
-a :不与 terminal 有关的所有 process ;
-u :有效使用者 (effective user) 相关的 process ;
x :通常与 a 这个参数一起使用,可列出较完整信息。
输出格式规划:
l :较长、较详细的将该 PID  的的信息列出;
j :工作的格式 (jobs format)
-f :做一个更为完整的输出。

红色为父进程id

guest    12032 11991  0 21:32 pts/0    00:00:00 grep httpd

admin    14969 26047  0 09:21 ?        00:00:01 /usr/alibaba/httpd/bin/httpd -d /home/admin/run/deploy

admin    20417 26047  0 09:36 ?        00:00:01 /usr/alibaba/httpd/bin/httpd -d /home/admin/run/deploy

root     26047     1  0 Nov19 ?        00:00:00 /usr/alibaba/httpd/bin/httpd -d /home/admin/run/deploy

通过pstree -p 26047,  可以看到所有的子进程的线程!

查看swap使用情况:

#!/bin/bash

PID=${1:-[1-9]*}

total_swap=0

GetSwap () {

    pid=$1

    cmdline=$(cat /proc/$pid/cmdline 2>/dev/null|tr '' ' ')

    pid_swap=$(awk 'BEGIN{total=0}/Swap/{total+=$2}END{print total}' /proc/$pid/smaps 2>/dev/null)

    if [ "$pid_swap" != '' ] && [ "$pid_swap" -gt 0 ]; then

        echo "PID=$pid – Swap used: $pid_swap Kb – ($cmdline)"

    fi

}

cd /proc

for pid in $PID; do

    GetSwap $pid

    let total_swap+=$pid_swap

done

echo "Total swap: $total_swap Kb"

 

猜你喜欢

转载自zl198751.iteye.com/blog/1733936