diff options
| -rwxr-xr-x | pkgs/shell/dtach-list | 32 |
1 files changed, 32 insertions, 0 deletions
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 <sockets |
