summaryrefslogtreecommitdiff
path: root/scripts/app-mem.sh
diff options
context:
space:
mode:
authorSyndamia <kamen@syndamia.com>2022-07-19 11:33:00 +0300
committerSyndamia <kamen@syndamia.com>2022-07-19 11:33:00 +0300
commitfdcd93a83cc66b2b475b76beb5f87e50e0483e9f (patch)
tree7af56bc5ca1006b32802e7ca8d15b28ca74cc347 /scripts/app-mem.sh
parentb526d5c377ffe3ee38949ee6728377981578d190 (diff)
downloaddotfiles-fdcd93a83cc66b2b475b76beb5f87e50e0483e9f.tar
dotfiles-fdcd93a83cc66b2b475b76beb5f87e50e0483e9f.tar.gz
dotfiles-fdcd93a83cc66b2b475b76beb5f87e50e0483e9f.zip
Moved scripts to their own folder and renamed .cfgs folder to .confs
Diffstat (limited to 'scripts/app-mem.sh')
-rwxr-xr-xscripts/app-mem.sh29
1 files changed, 29 insertions, 0 deletions
diff --git a/scripts/app-mem.sh b/scripts/app-mem.sh
new file mode 100755
index 0000000..35384c9
--- /dev/null
+++ b/scripts/app-mem.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+# Huge thanks to https://askubuntu.com/a/549534/1085672 and https://www.zyxware.com/articles/4446/show-total-memory-usage-by-each-application-in-your-ubuntu-or-any-gnu-linux-system
+
+ps -A --sort -rss -o comm,pmem,rss | awk '
+ NR == 1 { print; next }
+ { a[$1] += $2; b[$1] += $3; }
+ END {
+ for (i in a) {
+ size_in_bytes = b[i] * 1024
+ split("B KB MB GB TB PB", unit)
+ human_readable = 0
+ if (size_in_bytes == 0) {
+ human_readable = 0
+ j = 0
+ }
+ else {
+ for (j = 5; human_readable < 1; j--)
+ human_readable = size_in_bytes / (2^(10*j))
+ }
+ printf "%-20s\t%s\t%.2f%s\t%s\n", i, a[i], human_readable, unit[j+2], b[i]
+ }
+ }
+' | awk 'NR>1' | sort -rnk4 | awk '
+ BEGIN {printf "%-20s\t%%MEM\tSIZE\n", "COMMAND"}
+ {
+ printf "%-20s\t%s\t%s\n", $1, $2, $3
+ }
+' | head -n 10