Wik*_*y L 10 linux memory swap
有很多可用的内存(大约4G)但在我的软呢帽中使用了交换(200 + M).
我想知道哪个进程使用swap.我怎么知道呢
ps和top仅显示内存使用情况.
提前致谢.
adr*_*lzt 26
改进cyberciti.biz命令以显示更简洁的答案:
(echo "COMM PID SWAP"; for file in /proc/*/status ; do awk '/^Pid|VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | grep kB | grep -wv "0 kB" | sort -k 3 -n -r) | column -t
Run Code Online (Sandbox Code Playgroud)
示例输出:
COMM PID SWAP
dockerd 662 2736 kB
skypeforlinux 26865 1320 kB
NetworkManager 303 1112 kB
slim 392 1028 kB
redis-server 350 204 kB
Run Code Online (Sandbox Code Playgroud)
从这里:
[a] / proc/meminfo - 此文件报告有关系统内存使用情况的统计信息.它可以免费用于报告系统上的空闲和已用内存(物理内存和交换内存)以及内核使用的共享内存和缓冲区.您还可以使用free,vmstat和其他工具查找相同的信息.
[b] / proc/$ {PID}/smaps,/ proc/$ {PID}/status和/ proc/$ {PID}/stat:使用这些文件查找有关每个进程使用的内存,页面和交换的信息使用它的PID.
[c] smem - 此命令(python脚本)报告内存使用情况,共享内存按比例分配.
您也可以参考了解使用您的交换的内容
#!/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"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19767 次 |
| 最近记录: |