| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
package System::Introspector::Probe::Processes; |
|
2
|
1
|
|
|
1
|
|
21620
|
use Moo; |
|
|
1
|
|
|
|
|
14793
|
|
|
|
1
|
|
|
|
|
5
|
|
|
3
|
|
|
|
|
|
|
|
|
4
|
1
|
|
|
|
|
433
|
use System::Introspector::Util qw( |
|
5
|
|
|
|
|
|
|
handle_from_command |
|
6
|
|
|
|
|
|
|
transform_exceptions |
|
7
|
1
|
|
|
1
|
|
2243
|
); |
|
|
1
|
|
|
|
|
4
|
|
|
8
|
|
|
|
|
|
|
|
|
9
|
|
|
|
|
|
|
# args is automatically included, since it has to be last |
|
10
|
|
|
|
|
|
|
my @Included = qw( |
|
11
|
|
|
|
|
|
|
blocked |
|
12
|
|
|
|
|
|
|
c |
|
13
|
|
|
|
|
|
|
class |
|
14
|
|
|
|
|
|
|
cputime |
|
15
|
|
|
|
|
|
|
egid egroup |
|
16
|
|
|
|
|
|
|
etime |
|
17
|
|
|
|
|
|
|
euid euser |
|
18
|
|
|
|
|
|
|
fgid fgroup |
|
19
|
|
|
|
|
|
|
flags |
|
20
|
|
|
|
|
|
|
fuid fuser |
|
21
|
|
|
|
|
|
|
ignored |
|
22
|
|
|
|
|
|
|
lwp |
|
23
|
|
|
|
|
|
|
nice |
|
24
|
|
|
|
|
|
|
nlwp |
|
25
|
|
|
|
|
|
|
pgid pgrp |
|
26
|
|
|
|
|
|
|
pid ppid |
|
27
|
|
|
|
|
|
|
pri |
|
28
|
|
|
|
|
|
|
psr |
|
29
|
|
|
|
|
|
|
rgid rgroup |
|
30
|
|
|
|
|
|
|
rss |
|
31
|
|
|
|
|
|
|
ruid ruser |
|
32
|
|
|
|
|
|
|
sgid sgroup |
|
33
|
|
|
|
|
|
|
sid |
|
34
|
|
|
|
|
|
|
size |
|
35
|
|
|
|
|
|
|
start_time |
|
36
|
|
|
|
|
|
|
stat |
|
37
|
|
|
|
|
|
|
suid suser |
|
38
|
|
|
|
|
|
|
tid |
|
39
|
|
|
|
|
|
|
time |
|
40
|
|
|
|
|
|
|
tname |
|
41
|
|
|
|
|
|
|
wchan |
|
42
|
|
|
|
|
|
|
); |
|
43
|
|
|
|
|
|
|
|
|
44
|
|
|
|
|
|
|
sub gather { |
|
45
|
1
|
|
|
1
|
0
|
54
|
my ($self) = @_; |
|
46
|
1
|
|
|
|
|
13
|
my @names = (@Included, 'args'); |
|
47
|
|
|
|
|
|
|
return transform_exceptions { |
|
48
|
1
|
|
|
1
|
|
4
|
my $pipe = $self->_open_ps_pipe; |
|
49
|
1
|
|
|
|
|
9
|
my $spec = <$pipe>; |
|
50
|
1
|
|
|
|
|
75
|
$spec =~ s{(?:^\s+|\s+$)}{}g; |
|
51
|
1
|
|
|
|
|
41
|
my @fields = map lc, split m{\s+}, $spec; |
|
52
|
1
|
|
|
|
|
8
|
my @rows; |
|
53
|
1
|
|
|
|
|
14
|
while (defined( my $line = <$pipe> )) { |
|
54
|
11
|
|
|
|
|
21
|
chomp $line; |
|
55
|
11
|
|
|
|
|
947
|
$line =~ s{(?:^\s+|\s+$)}{}g; |
|
56
|
11
|
|
|
|
|
188
|
my @values = split m{\s+}, $line, scalar @fields; |
|
57
|
11
|
|
|
|
|
34
|
my %row; |
|
58
|
11
|
|
|
|
|
292
|
@row{ @names } = @values; |
|
59
|
11
|
|
|
|
|
113
|
push @rows, \%row; |
|
60
|
|
|
|
|
|
|
} |
|
61
|
29
|
50
|
|
|
|
99
|
return { processes => [ sort { |
|
62
|
1
|
|
|
|
|
11
|
($a->{args} cmp $b->{args}) |
|
63
|
|
|
|
|
|
|
|| |
|
64
|
|
|
|
|
|
|
($a->{pid} <=> $b->{pid}) |
|
65
|
|
|
|
|
|
|
} @rows ] }; |
|
66
|
1
|
|
|
|
|
11
|
}; |
|
67
|
|
|
|
|
|
|
} |
|
68
|
|
|
|
|
|
|
|
|
69
|
|
|
|
|
|
|
sub _open_ps_pipe { |
|
70
|
1
|
|
|
1
|
|
2
|
my ($self) = @_; |
|
71
|
1
|
|
|
|
|
12
|
return handle_from_command sprintf |
|
72
|
|
|
|
|
|
|
'ps -eo %s', |
|
73
|
|
|
|
|
|
|
join(',', @Included, 'args'); |
|
74
|
|
|
|
|
|
|
} |
|
75
|
|
|
|
|
|
|
|
|
76
|
|
|
|
|
|
|
1; |
|
77
|
|
|
|
|
|
|
|
|
78
|
|
|
|
|
|
|
__END__ |