#! /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