2013-02-26 45 views
1

我用下面的脚本(从这个博客http://northernmost.org/blog/find-out-what-is-using-your-swap)知道每个进程是多少互换使用知道多少交换所使用的每一个过程在Linux上

#!/bin/bash 
# Get current swap usage for all running processes 
# Erik Ljungstrom 27/05/2011 
SUM=0 
OVERALL=0 
for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do 
PID=`echo $DIR | cut -d/-f 3` 
PROGNAME=`ps -p $PID -o comm --no-headers` 
for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'` 
do 
let SUM=$SUM+$SWAP 
done 
echo "PID=$PID - Swap used: $SUM - ($PROGNAME)" 
let OVERALL=$OVERALL+$SUM 
SUM=0 

done 
echo "Overall swap used: $OVERALL" 

此使用的输出总交换脚本与免费命令输出使用的输出不匹配。

有人能解释为什么吗?

+0

内核可以使用一些交换空间来管理。我怀疑这是你所看到的。 IIRC,'mmap''d文件在某些​​情况下使用交换。 – JimR 2013-10-09 20:36:39

+1

可能重复[如何找出哪些进程交换在Linux?](http://stackoverflow.com/questions/479953/how-to-find-out-which-processes-are-swapping-in-linux) – harrymc 2013-11-28 18:36:47

回答

2

通过使用命令“top”然后按“O”,然后从给定选项中选择“P:SWAP = Swapped size(kb)”,可以找出每个进程的交换使用情况。这些进程将根据交换使用情况进行整理。

最新版本的顶级v3.3.3没有“O”选项。

+0

顶部使用/ proc来获取这些数据,所以它可能是相同的... – JimR 2013-10-09 20:33:37

相关问题