2 title: L.tr('Processes'),
3 description: L.tr('This list gives an overview over currently running system processes and their status.'),
5 getProcessList: L.rpc.declare({
6 object: 'luci2.system',
7 method: 'process_list',
8 expect: { processes: [ ] },
9 filter: function(data) {
10 data.sort(function(a, b) { return a.pid - b.pid });
15 sendSignal: L.rpc.declare({
16 object: 'luci2.system',
17 method: 'process_signal',
18 params: [ 'pid', 'signal' ],
19 filter: function(data) {
26 var allow_signals = this.options.acls.status;
27 return self.getProcessList().then(function(list) {
28 var procTable = new L.ui.table({
33 caption: L.tr('Owner'),
36 caption: L.tr('Command'),
39 caption: L.tr('CPU usage (%)'),
43 caption: L.tr('Memory usage (%)'),
48 format: function(v, n) {
50 .addClass('btn-group')
51 .append($('<button />')
52 .addClass('btn btn-primary btn-sm dropdown-toggle')
53 .attr('data-toggle', 'dropdown')
54 .text(L.tr('Signal…')))
56 .addClass('dropdown-menu pull-right')
60 .html('%s (<code>%s</code>)'.format(L.trc('UNIX signal', 'Reload'), 'HUP'))
61 .click(function(ev) { self.sendSignal(v, 1).then(status); ev.preventDefault(); })))
65 .html('%s (<code>%s</code>)'.format(L.trc('UNIX signal', 'Terminate'), 'TERM'))
66 .click(function(ev) { self.sendSignal(v, 15).then(status); ev.preventDefault(); })))
70 .html('%s (<code>%s</code>)'.format(L.trc('UNIX signal', 'Kill immediately'), 'KILL'))
71 .click(function(ev) { self.sendSignal(v, 9).then(status); ev.preventDefault(); }))))
77 procTable.insertInto('#process_table');