ubuntuusers.de

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
Anhang herunterladen

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.

Diese Revision wurde am 28. Dezember 2024 10:36 von ubuntuusers erstellt.