跳到主內容

【Shell】【tip】 找出目前誰使用swap

who_use_swap.sh


#!/bin/bash
for p in /proc/[0-9]*; do
  pid=${p##*/}
  swap=$(awk '/VmSwap:/ {print $2}' $p/status 2>/dev/null)
  comm=$(tr -d '\0' < $p/comm 2>/dev/null)
  [ -n "$swap" ] && [ "$swap" -gt 0 ] && printf "%10s KiB  pid=%s  %s\n" "$swap" "$pid" "$comm"
done | sort -nr | head -20
[root@localhost shell]# bash who_use_swap.sh 
       508 KiB  pid=31107  java
       204 KiB  pid=16675  java
       136 KiB  pid=30500  sentry
       116 KiB  pid=14021  sentry
       104 KiB  pid=1040  containerd
        88 KiB  pid=30650  sentry
        72 KiB  pid=30508  sentry
        52 KiB  pid=29817  sentry
        52 KiB  pid=10666  dockerd
        44 KiB  pid=30521  sentry
        40 KiB  pid=30491  sentry
        40 KiB  pid=12964  sentry
        36 KiB  pid=338  sentry
        28 KiB  pid=30082  sentry
        24 KiB  pid=30615  sentry
        20 KiB  pid=322  sentry
        16 KiB  pid=32662  containerd-shim
        16 KiB  pid=31934  sentry
        16 KiB  pid=30911  sentry
        16 KiB  pid=26832  sentry