collectd-interface 0.3.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/collectd-interface-daemon +21 -361
- data/bin/collectd-interface-plugins +11 -11
- data/lib/collectd/interface/config.rb +117 -0
- data/lib/collectd/interface/options.rb +68 -0
- data/lib/collectd/interface/service/data.rb +110 -0
- data/lib/collectd/interface/service/graph.rb +106 -0
- data/lib/collectd/interface/service/report.rb +82 -0
- data/lib/collectd/interface/service.rb +44 -0
- data/public/images/cpus.png +0 -0
- data/public/images/device/ops/sda.png +0 -0
- data/public/images/device/ops/sda1.png +0 -0
- data/public/images/device/ops/sda2.png +0 -0
- data/public/images/device/ops/sda5.png +0 -0
- data/public/images/device/ops/sda6.png +0 -0
- data/public/images/device/ops/sda7.png +0 -0
- data/public/images/device/ops/sda8.png +0 -0
- data/public/images/device/ops/sda9.png +0 -0
- data/public/images/device/ops/sdb.png +0 -0
- data/public/images/device/ops/sdb1.png +0 -0
- data/public/images/device/ops/sdh.png +0 -0
- data/public/images/device/ops/sdh1.png +0 -0
- data/public/images/device/ops/sdh2.png +0 -0
- data/public/images/device/ops/sdh3.png +0 -0
- data/public/images/device/ops/sdh4.png +0 -0
- data/public/images/device/ops/sr0.png +0 -0
- data/public/images/device/time/sda.png +0 -0
- data/public/images/device/time/sda1.png +0 -0
- data/public/images/device/time/sda2.png +0 -0
- data/public/images/device/time/sda5.png +0 -0
- data/public/images/device/time/sda6.png +0 -0
- data/public/images/device/time/sda7.png +0 -0
- data/public/images/device/time/sda8.png +0 -0
- data/public/images/device/time/sda9.png +0 -0
- data/public/images/device/time/sdb.png +0 -0
- data/public/images/device/time/sdb1.png +0 -0
- data/public/images/device/time/sdh.png +0 -0
- data/public/images/device/time/sdh1.png +0 -0
- data/public/images/device/time/sdh2.png +0 -0
- data/public/images/device/time/sdh3.png +0 -0
- data/public/images/device/time/sdh4.png +0 -0
- data/public/images/device/time/sr0.png +0 -0
- data/public/images/device/traffic/sda.png +0 -0
- data/public/images/device/traffic/sda1.png +0 -0
- data/public/images/device/traffic/sda2.png +0 -0
- data/public/images/device/traffic/sda5.png +0 -0
- data/public/images/device/traffic/sda6.png +0 -0
- data/public/images/device/traffic/sda7.png +0 -0
- data/public/images/device/traffic/sda8.png +0 -0
- data/public/images/device/traffic/sda9.png +0 -0
- data/public/images/device/traffic/sdb.png +0 -0
- data/public/images/device/traffic/sdb1.png +0 -0
- data/public/images/device/traffic/sdh.png +0 -0
- data/public/images/device/traffic/sdh1.png +0 -0
- data/public/images/device/traffic/sdh2.png +0 -0
- data/public/images/device/traffic/sdh3.png +0 -0
- data/public/images/device/traffic/sdh4.png +0 -0
- data/public/images/device/traffic/sr0.png +0 -0
- data/public/images/irqs.png +0 -0
- data/public/images/load.png +0 -0
- data/public/images/memory.png +0 -0
- data/public/images/network/packets/eth0.png +0 -0
- data/public/images/network/packets/lo.png +0 -0
- data/public/images/network/packets/nbr0-nic.png +0 -0
- data/public/images/network/packets/nbr0.png +0 -0
- data/public/images/network/packets/virbr0.png +0 -0
- data/public/images/network/packets/vnet0.png +0 -0
- data/public/images/network/packets/vnet1.png +0 -0
- data/public/images/network/packets/vnet2.png +0 -0
- data/public/images/network/packets/vnet3.png +0 -0
- data/public/images/network/packets/vnet4.png +0 -0
- data/public/images/network/packets/vnet5.png +0 -0
- data/public/images/network/traffic/eth0.png +0 -0
- data/public/images/network/traffic/lo.png +0 -0
- data/public/images/network/traffic/nbr0-nic.png +0 -0
- data/public/images/network/traffic/nbr0.png +0 -0
- data/public/images/network/traffic/virbr0.png +0 -0
- data/public/images/network/traffic/vnet0.png +0 -0
- data/public/images/network/traffic/vnet1.png +0 -0
- data/public/images/network/traffic/vnet2.png +0 -0
- data/public/images/network/traffic/vnet3.png +0 -0
- data/public/images/network/traffic/vnet4.png +0 -0
- data/public/images/network/traffic/vnet5.png +0 -0
- data/public/images/processes.png +0 -0
- data/public/images/users.png +0 -0
- data/public/script/table_filter.js +1217 -0
- data/public/style/default.css +28 -0
- data/test/collectd/interface/config_test.rb +9 -0
- data/test/collectd/interface/service_config_test.rb +26 -0
- data/test/collectd/interface/service_data_test.rb +46 -0
- data/test/start.rb +3 -0
- data/views/graph_header.erb +13 -4
- data/views/graphs/device/ops.erb +37 -0
- data/views/graphs/device/time.erb +37 -0
- data/views/graphs/device/traffic.erb +38 -0
- data/views/graphs/{irq.erb.disabled → irqs.erb} +8 -8
- data/views/graphs/network/packets.erb +35 -0
- data/views/graphs/network/traffic.erb +35 -0
- data/views/graphs/{users.erb.disabled → users.erb} +0 -0
- data/views/report.erb +32 -14
- data/views/reports/open-files/local.erb +62 -0
- data/views/reports/{processes-cpu-usage.erb → processes.erb} +0 -0
- data/views/reports/{system-sockets.erb → sockets.erb} +0 -0
- data/views/reports/{disk-free.erb → storage.erb} +1 -1
- data/views/template/options/graph.erb +1 -1
- metadata +98 -30
- data/public/images/cpus.svg +0 -946
- data/public/images/disk-traffic-root.png +0 -0
- data/public/images/disk-traffic-srv.png +0 -0
- data/public/images/disk-traffic-tmp.png +0 -0
- data/public/images/disk-traffic-var.png +0 -0
- data/public/images/irq.png +0 -0
- data/public/images/load.svg +0 -638
- data/public/images/memory.svg +0 -741
- data/public/images/network-eth0.png +0 -0
- data/public/images/network-eth0.svg +0 -609
- data/public/images/network-lo.png +0 -0
- data/public/images/network-lo.svg +0 -644
- data/public/images/processes.svg +0 -832
- data/views/graphs/disk-traffic-root.erb +0 -24
- data/views/graphs/disk-traffic-srv.erb.disabled +0 -25
- data/views/graphs/disk-traffic-tmp.erb.disabled +0 -24
- data/views/graphs/disk-traffic-var.erb.disabled +0 -25
- data/views/graphs/network-eth0.erb +0 -23
- data/views/graphs/network-lo.erb +0 -23
- data/views/reports/list-open-files-lustre.erb.disabled +0 -44
- data/views/reports/list-open-files-tmp.erb +0 -44
@@ -1,24 +0,0 @@
|
|
1
|
-
<% name = '/' %>
|
2
|
-
<% device = `df -l #{name} | grep '/dev/'`.split[0].split('/')[-1] %>
|
3
|
-
--title='Disk Traffic "<%= name %>"' --vertical-label="Bytes" \
|
4
|
-
--alt-autoscale-max --base 1024 \
|
5
|
-
DEF:read_av=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:read:AVERAGE \
|
6
|
-
DEF:read_min=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:read:MIN \
|
7
|
-
DEF:read_max=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:read:MAX \
|
8
|
-
DEF:write_av=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:write:AVERAGE \
|
9
|
-
DEF:write_min=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:write:MIN \
|
10
|
-
DEF:write_max=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:write:MAX \
|
11
|
-
AREA:read_max<%= @color[:green_light] %> \
|
12
|
-
AREA:read_min#ffffff \
|
13
|
-
AREA:write_max<%= @color[:blue_light] %> \
|
14
|
-
AREA:write_min#ffffff \
|
15
|
-
LINE1:read_av<%= @color[:green_dark] %>:"Read\t\t\t" \
|
16
|
-
GPRINT:read_min:MIN:"Min. %3.0lf%sB" \
|
17
|
-
GPRINT:read_av:AVERAGE:"Avg. %3.0lf%sB" \
|
18
|
-
GPRINT:read_max:MAX:"Max. %3.0lf%sB" \
|
19
|
-
GPRINT:read_av:LAST:"Last %3.0lf%sB" \
|
20
|
-
LINE1:write_av<%= @color[:blue_dark] %>:"Write\t\t" \
|
21
|
-
GPRINT:write_min:MIN:"Min. %3.0lf%sB" \
|
22
|
-
GPRINT:write_av:AVERAGE:"Avg. %3.0lf%sB" \
|
23
|
-
GPRINT:write_max:MAX:"Max. %3.0lf%sB" \
|
24
|
-
GPRINT:write_av:LAST:"Last %3.0lf%sB" \
|
@@ -1,25 +0,0 @@
|
|
1
|
-
<% name = '/srv' %>
|
2
|
-
<% device = `df -l #{name} | grep '/dev/'`.split[0].split('/')[-1] %>
|
3
|
-
--title='Disk Traffic "<%= name %>"' \
|
4
|
-
--vertical-label="Bytes" \
|
5
|
-
--alt-autoscale-max --base 1024 \
|
6
|
-
DEF:read_av=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:read:AVERAGE \
|
7
|
-
DEF:read_min=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:read:MIN \
|
8
|
-
DEF:read_max=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:read:MAX \
|
9
|
-
DEF:write_av=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:write:AVERAGE \
|
10
|
-
DEF:write_min=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:write:MIN \
|
11
|
-
DEF:write_max=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:write:MAX \
|
12
|
-
AREA:read_max<%= @color[:green_light] %> \
|
13
|
-
AREA:read_min#ffffff \
|
14
|
-
AREA:write_max<%= @color[:blue_light] %> \
|
15
|
-
AREA:write_min#ffffff \
|
16
|
-
LINE1:read_av<%= @color[:green_dark] %>:"Read\t\t\t" \
|
17
|
-
GPRINT:read_min:MIN:"Min. %3.0lf%sB" \
|
18
|
-
GPRINT:read_av:AVERAGE:"Avg. %3.0lf%sB" \
|
19
|
-
GPRINT:read_max:MAX:"Max. %3.0lf%sB" \
|
20
|
-
GPRINT:read_av:LAST:"Last %3.0lf%sB" \
|
21
|
-
LINE1:write_av<%= @color[:blue_dark] %>:"Write\t\t" \
|
22
|
-
GPRINT:write_min:MIN:"Min. %3.0lf%sB" \
|
23
|
-
GPRINT:write_av:AVERAGE:"Avg. %3.0lf%sB" \
|
24
|
-
GPRINT:write_max:MAX:"Max. %3.0lf%sB" \
|
25
|
-
GPRINT:write_av:LAST:"Last %3.0lf%sB" \
|
@@ -1,24 +0,0 @@
|
|
1
|
-
<% name = '/tmp' %>
|
2
|
-
<% device = `df -l #{name} | grep '/dev/'`.split[0].split('/')[-1] %>
|
3
|
-
--title='Disk Traffic "<%= name %>"' --vertical-label="Bytes" \
|
4
|
-
--alt-autoscale-max --tabwidth=10 --base 1024 \
|
5
|
-
DEF:read_av=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:read:AVERAGE \
|
6
|
-
DEF:read_min=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:read:MIN \
|
7
|
-
DEF:read_max=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:read:MAX \
|
8
|
-
DEF:write_av=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:write:AVERAGE \
|
9
|
-
DEF:write_min=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:write:MIN \
|
10
|
-
DEF:write_max=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:write:MAX \
|
11
|
-
AREA:read_max<%= @color[:green_light] %> \
|
12
|
-
AREA:read_min#ffffff \
|
13
|
-
AREA:write_max<%= @color[:blue_light] %> \
|
14
|
-
AREA:write_min#ffffff \
|
15
|
-
LINE1:read_av<%= @color[:green_dark] %>:"Read\t\t\t" \
|
16
|
-
GPRINT:read_min:MIN:"Min. %3.0lf%sB" \
|
17
|
-
GPRINT:read_av:AVERAGE:"Avg. %3.0lf%sB" \
|
18
|
-
GPRINT:read_max:MAX:"Max. %3.0lf%sB" \
|
19
|
-
GPRINT:read_av:LAST:"Last %3.0lf%sB" \
|
20
|
-
LINE1:write_av<%= @color[:blue_dark] %>:"Write\t\t" \
|
21
|
-
GPRINT:write_min:MIN:"Min. %3.0lf%sB" \
|
22
|
-
GPRINT:write_av:AVERAGE:"Avg. %3.0lf%sB" \
|
23
|
-
GPRINT:write_max:MAX:"Max. %3.0lf%sB" \
|
24
|
-
GPRINT:write_av:LAST:"Last %3.0lf%sB" \
|
@@ -1,25 +0,0 @@
|
|
1
|
-
<% name = '/var'%>
|
2
|
-
<% device = `df -l #{name} | grep '/dev/'`.split[0].split('/')[-1] %>
|
3
|
-
--title='Disk Traffic "<%= name %>"' \
|
4
|
-
--vertical-label="Bytes" \
|
5
|
-
--alt-autoscale-max --base 1024 \
|
6
|
-
DEF:read_av=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:read:AVERAGE \
|
7
|
-
DEF:read_min=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:read:MIN \
|
8
|
-
DEF:read_max=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:read:MAX \
|
9
|
-
DEF:write_av=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:write:AVERAGE \
|
10
|
-
DEF:write_min=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:write:MIN \
|
11
|
-
DEF:write_max=<%= @rrd_path %>disk-<%= device %>/disk_octets.rrd:write:MAX \
|
12
|
-
AREA:read_max<%= @color[:green_light] %> \
|
13
|
-
AREA:read_min#ffffff \
|
14
|
-
AREA:write_max<%= @color[:blue_light] %> \
|
15
|
-
AREA:write_min#ffffff \
|
16
|
-
LINE1:read_av<%= @color[:green_dark] %>:"Read\t\t\t" \
|
17
|
-
GPRINT:read_min:MIN:"Min. %3.0lf%sB" \
|
18
|
-
GPRINT:read_av:AVERAGE:"Avg. %3.0lf%sB" \
|
19
|
-
GPRINT:read_max:MAX:"Max. %3.0lf%sB" \
|
20
|
-
GPRINT:read_av:LAST:"Last %3.0lf%sB" \
|
21
|
-
LINE1:write_av<%= @color[:blue_dark] %>:"Write\t\t" \
|
22
|
-
GPRINT:write_min:MIN:"Min. %3.0lf%sB" \
|
23
|
-
GPRINT:write_av:AVERAGE:"Avg. %3.0lf%sB" \
|
24
|
-
GPRINT:write_max:MAX:"Max. %3.0lf%sB" \
|
25
|
-
GPRINT:write_av:LAST:"Last %3.0lf%sB" \
|
@@ -1,23 +0,0 @@
|
|
1
|
-
--title='Network Traffic Interface "eth0"' \
|
2
|
-
--vertical-label="Bits" \
|
3
|
-
--alt-autoscale-max \
|
4
|
-
DEF:rx_av=<%= @rrd_path %>/interface/if_octets-eth0.rrd:rx:AVERAGE \
|
5
|
-
DEF:rx_min=<%= @rrd_path %>/interface/if_octets-eth0.rrd:rx:MIN \
|
6
|
-
DEF:rx_max=<%= @rrd_path %>/interface/if_octets-eth0.rrd:rx:MAX \
|
7
|
-
DEF:tx_av=<%= @rrd_path %>/interface/if_octets-eth0.rrd:tx:AVERAGE \
|
8
|
-
DEF:tx_min=<%= @rrd_path %>/interface/if_octets-eth0.rrd:tx:MIN \
|
9
|
-
DEF:tx_max=<%= @rrd_path %>/interface/if_octets-eth0.rrd:tx:MAX \
|
10
|
-
AREA:rx_max<%= @color[:green_light] %> \
|
11
|
-
AREA:rx_min#ffffff \
|
12
|
-
AREA:tx_max<%= @color[:blue_light] %> \
|
13
|
-
AREA:tx_min#ffffff \
|
14
|
-
LINE1:rx_av<%= @color[:green_dark] %>:"Receive " \
|
15
|
-
GPRINT:rx_min:MIN:"Min. %3.0lf%sb" \
|
16
|
-
GPRINT:rx_av:AVERAGE:"Avg. %3.0lf%sb" \
|
17
|
-
GPRINT:rx_max:MAX:"Max. %3.0lf%sb" \
|
18
|
-
GPRINT:rx_av:LAST:"Last %3.0lf%sb" \
|
19
|
-
LINE1:tx_av<%= @color[:blue_dark] %>:"Transmit" \
|
20
|
-
GPRINT:tx_min:MIN:"Min. %3.0lf%sb" \
|
21
|
-
GPRINT:tx_av:AVERAGE:"Avg. %3.0lf%sb" \
|
22
|
-
GPRINT:tx_max:MAX:"Max. %3.0lf%sb" \
|
23
|
-
GPRINT:tx_av:LAST:"Last %3.0lf%sb" \
|
data/views/graphs/network-lo.erb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
--title='Network Traffic Interface "lo"' \
|
2
|
-
--vertical-label="Bits" \
|
3
|
-
--alt-autoscale-max \
|
4
|
-
DEF:rx_av=<%= @rrd_path %>/interface/if_octets-lo.rrd:rx:AVERAGE \
|
5
|
-
DEF:rx_min=<%= @rrd_path %>/interface/if_octets-lo.rrd:rx:MIN \
|
6
|
-
DEF:rx_max=<%= @rrd_path %>/interface/if_octets-lo.rrd:rx:MAX \
|
7
|
-
DEF:tx_av=<%= @rrd_path %>/interface/if_octets-lo.rrd:tx:AVERAGE \
|
8
|
-
DEF:tx_min=<%= @rrd_path %>/interface/if_octets-lo.rrd:tx:MIN \
|
9
|
-
DEF:tx_max=<%= @rrd_path %>/interface/if_octets-lo.rrd:tx:MAX \
|
10
|
-
AREA:rx_max<%= @color[:green_light] %> \
|
11
|
-
AREA:rx_min#ffffff \
|
12
|
-
AREA:tx_max<%= @color[:blue_light] %> \
|
13
|
-
AREA:tx_min#ffffff \
|
14
|
-
LINE1:rx_av<%= @color[:green_dark] %>:"Receive " \
|
15
|
-
GPRINT:rx_min:MIN:"Min. %3.0lf%sb" \
|
16
|
-
GPRINT:rx_av:AVERAGE:"Avg. %3.0lf%sb" \
|
17
|
-
GPRINT:rx_max:MAX:"Max. %3.0lf%sb" \
|
18
|
-
GPRINT:rx_av:LAST:"Last %3.0lf%sb" \
|
19
|
-
LINE1:tx_av<%= @color[:blue_dark] %>:"Transmit" \
|
20
|
-
GPRINT:tx_min:MIN:"Min. %3.0lf%sb" \
|
21
|
-
GPRINT:tx_av:AVERAGE:"Avg. %3.0lf%sb" \
|
22
|
-
GPRINT:tx_max:MAX:"Max. %3.0lf%sb" \
|
23
|
-
GPRINT:tx_av:LAST:"Last %3.0lf%sb" \
|
@@ -1,44 +0,0 @@
|
|
1
|
-
<% path = '/lustre' %>
|
2
|
-
<% content = `lsof -u ^root -S2 #{path} | tr -s ' ' | cut -d' ' -f2-4,9-` %>
|
3
|
-
<% if @type == 'text' then %>
|
4
|
-
<%= content %>
|
5
|
-
<% elsif @type == 'json' %>
|
6
|
-
<% require 'json' %>
|
7
|
-
<% struct = Array.new %>
|
8
|
-
<% content = content.split("\n")[1..-1] %>
|
9
|
-
<% keys = ['pid','user','state','file'] %>
|
10
|
-
<% unless content.empty? %>
|
11
|
-
<% content.each do |file| %>
|
12
|
-
<% file = file.split %>
|
13
|
-
<% values = file[0..2] %>
|
14
|
-
<% values << file[3..-1].join(' ') %>
|
15
|
-
<% struct << Hash[*keys.zip(values).flatten] %>
|
16
|
-
<% end %>
|
17
|
-
<% end %>
|
18
|
-
<%= JSON.pretty_generate struct %>
|
19
|
-
<% else %>
|
20
|
-
<div style="font-size:160%"><strong>Open Files in Lustre</strong></div>
|
21
|
-
<table>
|
22
|
-
<thead>
|
23
|
-
<tr>
|
24
|
-
<td>Process ID</td>
|
25
|
-
<td>User</td>
|
26
|
-
<td>State</td>
|
27
|
-
<td>File</td>
|
28
|
-
</tr>
|
29
|
-
</thead>
|
30
|
-
<tbody>
|
31
|
-
<% if content.empty? %>
|
32
|
-
<tr><td>none</td><td>none</td><td>none</td><td>none</td></tr>
|
33
|
-
<% else %>
|
34
|
-
<% content.split("\n")[1..-1].each do |file| %>
|
35
|
-
<% file = file.split%>
|
36
|
-
<tr>
|
37
|
-
<td><%= file[0..2].join('</td><td>') %></td>
|
38
|
-
<td><span style="font-size:80%"><%= file[3..-1].join(' ')%></span></td>
|
39
|
-
</tr>
|
40
|
-
<% end %>
|
41
|
-
<% end %>
|
42
|
-
</tbody>
|
43
|
-
</table>
|
44
|
-
<% end %>
|
@@ -1,44 +0,0 @@
|
|
1
|
-
<% path = '/tmp' %>
|
2
|
-
<% content = `lsof -u ^root -S2 #{path} | tr -s ' ' | cut -d' ' -f2-4,9-` %>
|
3
|
-
<% if @type == 'text' then %>
|
4
|
-
<%= content %>
|
5
|
-
<% elsif @type == 'json' %>
|
6
|
-
<% require 'json' %>
|
7
|
-
<% struct = Array.new %>
|
8
|
-
<% content = content.split("\n")[1..-1] %>
|
9
|
-
<% keys = ['pid','user','state','file'] %>
|
10
|
-
<% unless content.empty? %>
|
11
|
-
<% content.each do |file| %>
|
12
|
-
<% file = file.split %>
|
13
|
-
<% values = file[0..2] %>
|
14
|
-
<% values << file[3..-1].join(' ') %>
|
15
|
-
<% struct << Hash[*keys.zip(values).flatten] %>
|
16
|
-
<% end %>
|
17
|
-
<% end %>
|
18
|
-
<%= JSON.pretty_generate struct %>
|
19
|
-
<% else %>
|
20
|
-
<div style="font-size:160%"><strong>Open Files in Temp</strong></div>
|
21
|
-
<table>
|
22
|
-
<thead>
|
23
|
-
<tr>
|
24
|
-
<td>Process ID</td>
|
25
|
-
<td>User</td>
|
26
|
-
<td>State</td>
|
27
|
-
<td>File</td>
|
28
|
-
</tr>
|
29
|
-
</thead>
|
30
|
-
<tbody>
|
31
|
-
<% if content.empty? %>
|
32
|
-
<tr><td>none</td><td>none</td><td>none</td><td>none</td></tr>
|
33
|
-
<% else %>
|
34
|
-
<% content.split("\n")[1..-1].each do |file| %>
|
35
|
-
<% file = file.split%>
|
36
|
-
<tr>
|
37
|
-
<td><%= file[0..2].join('</td><td>') %></td>
|
38
|
-
<td><span style="font-size:80%"><%= file[3..-1].join(' ')%></span></td>
|
39
|
-
</tr>
|
40
|
-
<% end %>
|
41
|
-
<% end %>
|
42
|
-
</tbody>
|
43
|
-
</table>
|
44
|
-
<% end %>
|