X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=home%2Flib%2Flogin_functions.sh;h=335f6fdf6b6d368da67c3f013b2c9326ccb43ac9;hb=cd113e384290fd446e1900981a88c5ffc1811c1e;hp=8d6bbd9b02f450fb068096367f58b81d066ce6f2;hpb=60bf43ac8fbe8ada1eb8029725125ae1473f1a9f;p=khome.git diff --git a/home/lib/login_functions.sh b/home/lib/login_functions.sh index 8d6bbd9..335f6fd 100644 --- a/home/lib/login_functions.sh +++ b/home/lib/login_functions.sh @@ -674,11 +674,54 @@ status() { echo 'accounting' - printf '%stmux\n%ssessions %d, clients %d\n' \ - "$indent_unit" \ - "${indent_unit}${indent_unit}" \ - "$(tmux list-sessions 2> /dev/null | wc -l)" \ - "$(tmux list-clients 2> /dev/null | wc -l)" + # TODO Bring back seesion and client listing, but per server/socket. + printf '%stmux\n' "$indent_unit" + ps -eo comm,cmd \ + | awk ' + # Expecting lines like: + # "tmux: server tmux -L pistactl new-session -d -s pistactl" + # "tmux: client tmux -L foo" + # "tmux: client tmux -Lbar" + # "tmux: client tmux" + # "tmux: server tmux -L foo -S bar" <-- -S takes precedence + /^tmux:/ { + # XXX This of course assumes pervasive usage of -L + # TODO Handle -S + role=$2 + + split($0, sides_of_S, "-S") + split(sides_of_S[2], words_right_of_S, FS) + + split($0, sides_of_L, "-L") + split(sides_of_L[2], words_right_of_L, FS) + + if (words_right_of_S[1]) { + sock = "path." words_right_of_S[1] + } else if (words_right_of_L[1]) { + sock = "name." words_right_of_L[1] + } else { + sock = "default" + } + + roles[role]++ + socks[sock]++ + count[role, sock]++ + } + + END { + for (sock in socks) { + clients = count["client", sock] + printf "%s ", sock + if (clients) { + printf "<-> %d", clients + } + printf "\n" + } + printf "\n" + }' \ + | sort \ + | column -t \ + | indent "${indent_unit}${indent_unit}" echo