Anhang: swapstat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #! /bin/bash # Aktuelle Nutzung von Swap für alle Prozesse anzeigen. # © 2024 kB @ UbuntuUsers.de # SPDX-License-Identifier: GPL-2.0-or-later case $1 in (''|all) find /proc/ -maxdepth 1 -type d -name [0-9]* ;; (*) for PID ; do echo /proc/$PID ; done esac | while read DIR do ! test -e $DIR/smaps || sudo awk -v M=0 -v PID=${DIR##*/} '/^Swap/ { M += $2 } ; END { print PID, M }' $DIR/smaps done | { PROCs=0 SUMME=0 while read PID SWAP do (( ++PROCs , SUMME += SWAP , 0 == SWAP + $# )) || printf 'PID=%s\t%s\tSwap=%s\n' $PID $( ps -p $PID -o comm --no-headers ) $SWAP done printf '∑=%s\t\t∑=%s\n' $PROCs $SUMME } | column -d -s $'\t' -t |
Installation¶
Datei herunterladen, ausführbar machen und in ein Verzeichnis verschieben, welches im Suchpfad PATH
für ausführbare Programme aufgeführt ist.
Benutzung¶
Das Programm kann in einem Terminal durch Aufruf mit seinem Namen gestartet werden. Dabei können optional Parameter übergeben werden.
Beim Aufruf ohne Parameter durchsucht das Programm die Verwaltungsdaten aller Prozesse und ermittelt deren momentane Nutzung des Swap-Speichers. Es werden alle Prozesse mit PID, Namen und Swap-Größe tabellarisch ausgegeben, sofern deren Swap-Größe nicht 0 ist. Danach wird noch eine Summenzeile mit der Anzahl aller Prozesse und der gesamten Größe des genutzten Swap-Speichers ausgegeben. Das Programm benötigt einige Sekunden, bevor eine Ausgabe erscheint.
Beim Aufruf mit dem Wert all
für den ersten Parameter arbeitet das Skript wie beim Aufruf ohne Parameter, jedoch werden auch die Prozesse mit momentaner Swap-Größe 0 gelistet.
Andere Werte für die Parameter werden als PID aufgefasst, somit sind nur Zahlen sinnvoll. Es werden nur die angegebenen Prozesse untersucht, ausgegeben und summiert.
Arbeitsweise¶
Untersucht wird die Datei /proc/PID/smaps eines jeden Prozesses.