parent
a54873573f
commit
410312a4a8
@ -0,0 +1,60 @@
|
|||||||
|
# --- enable/disable this file ---
|
||||||
|
SRC_ENABLED=true
|
||||||
|
|
||||||
|
case "$SRC_ENABLED" in
|
||||||
|
1|true|yes|on) unset SRC_ENABLED ;; # enabled — clean up and continue
|
||||||
|
*) unset SRC_ENABLED; return ;; # disabled — clean up and skip this file
|
||||||
|
esac
|
||||||
|
# ---------------------------------
|
||||||
|
|
||||||
|
swaptop()
|
||||||
|
{
|
||||||
|
local limit="${1:-10}"
|
||||||
|
local width="${2:-200}"
|
||||||
|
local p pid swap cmd
|
||||||
|
|
||||||
|
{
|
||||||
|
for p in /proc/[0-9]*; do
|
||||||
|
[ -r "$p/smaps" ] || continue
|
||||||
|
|
||||||
|
pid="${p##*/}"
|
||||||
|
|
||||||
|
swap=$(awk '
|
||||||
|
/^Swap:/ { swap += $2 }
|
||||||
|
/^SwapPss:/ { pss += $2; have_pss = 1 }
|
||||||
|
END {
|
||||||
|
if (have_pss)
|
||||||
|
print pss
|
||||||
|
else
|
||||||
|
print swap
|
||||||
|
}
|
||||||
|
' "$p/smaps" 2>/dev/null)
|
||||||
|
|
||||||
|
[ "${swap:-0}" -gt 0 ] || continue
|
||||||
|
|
||||||
|
cmd=$(tr '\0\t\n' ' ' < "$p/cmdline" 2>/dev/null)
|
||||||
|
|
||||||
|
if [ -z "$cmd" ]; then
|
||||||
|
cmd="[$(cat "$p/comm" 2>/dev/null)]"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf '%d\t%s\t%s\n' "$swap" "$pid" "$cmd"
|
||||||
|
done
|
||||||
|
} |
|
||||||
|
sort -nr -k1,1 |
|
||||||
|
head -n "$limit" |
|
||||||
|
awk -F '\t' -v width="$width" '
|
||||||
|
BEGIN {
|
||||||
|
printf "%10s %7s %s\n", "SWAP", "PID", "COMMAND"
|
||||||
|
printf "%10s %7s %s\n", "----------", "-------", "-------"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
line = sprintf("%9.1fM %7s %s", $1 / 1024, $2, $3)
|
||||||
|
|
||||||
|
if (length(line) > width)
|
||||||
|
line = substr(line, 1, width - 3) "..."
|
||||||
|
|
||||||
|
print line
|
||||||
|
}
|
||||||
|
'
|
||||||
|
}
|
||||||
Loading…
Reference in new issue