diff options
author | cinap_lenrek <cinap_lenrek@flatbox.9hal> | 2012-03-09 23:10:17 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@flatbox.9hal> | 2012-03-09 23:10:17 +0100 |
commit | 1d712d7e223e0c96c4b138bf52acb85a97c8ce7a (patch) | |
tree | 84557f0c3de09aabedb3d975d19672c23ec491e8 | |
parent | 388cd56d6917c9e3fdbf29801cdd9d379d1c938f (diff) | |
download | plan9front-1d712d7e223e0c96c4b138bf52acb85a97c8ce7a.tar.xz |
tap: trace all pipes
-rwxr-xr-x | rc/bin/tap | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/rc/bin/tap b/rc/bin/tap new file mode 100755 index 000000000..d17d175d4 --- /dev/null +++ b/rc/bin/tap @@ -0,0 +1,45 @@ +#!/bin/rc + +v=() + +fn otherqid { + x=`{echo $1 | sed 's/[12]$//'} + switch($1){ + case $x^1 + echo $x^2 + case $x^2 + echo $x^1 + } +} + +fn traceqid { + while(! ~ $#* 0){ + echo '['$2']' $1 + tracepid `{grep -n `{otherqid $1} /proc/*/fd | sed 's!^/proc/([^/]+)/.*!\1!g'} \ + | sed 's/^/ /g' + shift + shift + } +} + +fn tracepid { + while(! ~ $#* 0){ + echo $1 `{cat /proc/$1/args >[2]/dev/null} + switch($1){ + case $v + echo ' ...' + case * + v=($1 $v) + traceqid `{awk '/\#\|\/data1?$/{q=substr($5,2);print q" "$1}' /proc/$1/fd} \ + | sed 's/^/ /g' + } + shift + } +} + +if(~ $#* 0){ + echo 'Usage: ' $0 '[ pid ... ]' >[1=2] + exit usage +} + +tracepid $* |