blob: ee40f0b9591afff4e6c41c63dc8f76e5495662db (
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
#!/bin/rc
rfork e
if(~ $#* 0){
echo 'usage:' $0 '[ pid ... ]' >[1=2]
exit usage
}
f=/proc/*/fd
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 $t '['$2']' $3 $1
t=(' ' $t)
tracepid `{grep -n `{otherqid $1} $f >[2]/dev/null | sed 's!^/proc/([^/]+)/.*!\1!g'}
t=$t(2-)
shift
shift
shift
}
}
fn tracepid {
while(! ~ $#* 0){
a=ap$1
v=av$1
if(~ $$v $1){
echo $t $1 $$a ' ...'
}
if not {
$v=$1
$a=`{cat /proc/$1/args >[2]/dev/null}
if(~ $$a ''){
s=`{cat /proc/$1/status >[2]/dev/null}
$a=$s(1)
}
echo $t $1 $$a
t=(' ' $t)
traceqid `{awk '/\|/{q=substr($5,2);print q" "$1" "$10}' /proc/$1/fd >[2]/dev/null}
t=$t(2-)
}
shift
}
}
tracepid $*
|