Bezugnehmend auf meine letzte Frage über Sinn oder Unsinn der Swap-Partition kamen wir nicht umhin, festzustellen, dass für den einen oder anderen der Swap-Bereich durchaus noch seine Existenzberechtigung besitzt.
Nun wird sich sicher mancher fragen, ob er denn den Swap für sich selbst benötigt oder ob er überflüssig ist. Stellt sich jetzt die Frage, wie man seinen Swap-Bereich überhaupt untersuchen kann, ob dort Zugriffe stattfinden oder stattfanden und in welcher Größe dies geschieht oder geschah. Sicherlich für den einen oder anderen recht interessant, darüber Zahlen zu erhalten und sich das einmal genauer anzuschauen.
Dies kann man mit dem folgenden kleinen Script machen:
#!/bin/bash
#########################################################################
#Name: getswap.sh
#Subscription: Get current swap usage for all running processes
#by A. Laub
#andreas[-at-]laub-home.de
#original Script from Erik Ljungstrom 27/05/2011
#
#License:
#This program is free software: you can redistribute it and/or modify it
#under the terms of the GNU General Public License as published by the
#Free Software Foundation, either version 3 of the License, or (at your option)
#any later version.
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
#or FITNESS FOR A PARTICULAR PURPOSE.
#########################################################################
#Set the language
export LANG="en_US.UTF-8"
#Load the Pathes
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
#set the variables:
#do something:
function all {
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"
}
case "$1" in
all)
all
;;
mostused)
all | sort -n -k 5
;;
swaponly)
all | egrep -v "Swap used: 0" |sort -n -k 5
;;
*)
echo "Usage: $0 { all | mostused | swaponly }"
exit 1
;;
esac
Alles anzeigen
Wer jetzt dieses Script einmal testen möchte, der speichert sich dies unter getswap.sh oder sonst einem Namen irgendwo ab und macht es ausführbar.
Es läßt sich dann in der Konsole mit folgenden Parametern ausführen:
# Zeigt alle Prozesse an mit und ohne Swap Benutzung
getswap.sh all
# Zeigt alle Prozesse an mit und ohne Swap Benutzung und sortiert nach Swap Verbrauch
getswap.sh mostused
# Blendet Prozesse aus ohne Swap Benutzung und sortiert nach Swap Verbrauch
getswap.sh swaponly
Anmerkung: Ich habe es schon getestet. Funktioniert reibungslos und tut was es soll.