From 35f969990e2bbc70497a7d4e7fed5d7b4c87a73b Mon Sep 17 00:00:00 2001 From: tv Date: Sat, 19 Jul 2025 04:11:01 +0200 Subject: dtach-list: init --- pkgs/shell/dtach-list | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100755 pkgs/shell/dtach-list diff --git a/pkgs/shell/dtach-list b/pkgs/shell/dtach-list new file mode 100755 index 0000000..1e77a3d --- /dev/null +++ b/pkgs/shell/dtach-list @@ -0,0 +1,32 @@ +#! /bin/sh +#!buildShellBin path=coreutils:findutils:gawk:gnugrep:gnused:iproute2:psmisc +# +# NAME +# dtach-list - list dtach sessions +# +# SYNOPSIS +# dtach-list +# +set -efu + +workdir=$(mktemp -d -t dtach-list.XXXXXXXX) +readonly workdir +trap 'cd / && rm -r "$workdir"' EXIT +cd "$workdir" + +ss -HQpx > ssclients + +ss -HQlpx | sed -nr 's/ +/ /g; s/^u_str LISTEN ([^ ]+) [0-9]+ \* 0 users:\(\("dtach",pid=([0-9]+),fd=3\)\) $/\2 \1/p' | sort -n > sockets + +while read -r pid sock; do + connections=$(awk -v sock="$sock" '$3==sock{n++}BEGIN{n=0}END{print n}' ssclients) + pstree -TUalp "$pid" >pstree + if test "$connections" = 0; then + sed ' + 1s/$/ (detached)/ + s/.*/\x1b[38;5;202m&\x1b[m/ + ' pstree + else + cat pstree + fi +done