#!/bin/bash # # Riyad Preukschas <riyad@informatik.uni-bremen.de> # License: Mozilla Public License 2.0 # SPDX-License-Identifier: MPL-2.0 # # List all processes and how much swap they use. # The output format is: "<swap used> : <pid> : <process name>" # # To get the top 10 processes using swap you can run: # lsswap | sort -hr | head -n10 files=(/proc/*/status) exec awk ' BEGINFILE { # skip files that cannot be opened if ( ERRNO != "" ) { nextfile } } /^VmSwap:/ { vmswap = $2; vmswap_unit = $3; # force conversion to a number vmswap += 0 # make units more human readable if (vmswap_unit == "kB" && vmswap > 1000) { vmswap /= 1000 vmswap_unit = "MB" } if (vmswap_unit == "MB" && vmswap > 1000) { vmswap /= 1000 vmswap_unit = "GB" } } /^Name:/ { name = $2 } /^Pid:/ { pid = $2 } ENDFILE { # skip processes that cannot be swapped or are not using swap at all if (length(vmswap) != 0 && vmswap != 0) { printf "%1.1f%s : %d : %s\n", vmswap, vmswap_unit, pid, name } } ' "${files[@]}"