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
|
#! /usr/bin/stap
global ifxmit, ifrecv, ifdevs, ifpid, execname, user
probe netdev.transmit
{
p = pid()
execname[p] = execname()
user[p] = uid()
ifdevs[p, dev_name] = dev_name
ifxmit[p, dev_name] <<< length
ifpid[p, dev_name] ++
}
probe netdev.receive
{
p = pid()
execname[p] = execname()
user[p] = uid()
ifdevs[p, dev_name] = dev_name
ifrecv[p, dev_name] <<< length
ifpid[p, dev_name] ++
}
function print_activity()
{
printf("%5s %5s %-7s %7s %7s %7s %7s %-15s\n",
"PID", "UID", "DEV", "XMIT_PK", "RECV_PK",
"XMIT_KB", "RECV_KB", "COMMAND")
foreach ([pid, dev] in ifpid-) {
n_xmit = @count(ifxmit[pid, dev])
n_recv = @count(ifrecv[pid, dev])
printf("%5d %5d %-7s %7d %7d %7d %7d %-15s\n",
pid, user[pid], dev, n_xmit, n_recv,
n_xmit ? @sum(ifxmit[pid, dev])/1024 : 0,
n_recv ? @sum(ifrecv[pid, dev])/1024 : 0,
execname[pid])
}
print("\n")
delete execname
delete user
delete ifdevs
delete ifxmit
delete ifrecv
delete ifpid
}
probe timer.ms(5000)
{
print_activity()
}
|