blob: 1e77a3d27cf18057e0c816a1d3ecccea4041c6b4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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
|