function tmPostCallback(method, args, callback, version='1.0'){ var req_data = {}; req_data['name'] = 'task_manager'; req_data['func'] = method; req_data['script']='task_manager_index'; args['version'] = version; if (typeof(args) == 'string' && args == ''){ req_data['args'] = JSON.stringify(toArrayObject(args)); } else { req_data['args'] = JSON.stringify(args); } $.post('/plugins/callback', req_data, function(data) { if(typeof(callback) == 'function'){ callback(data); } },'json'); } var tab_name = 'p_list'; var search_val = ''; var select_pid = undefined; // 当前选中进程的id var realProcess = []; // 进程数组 var originProcess = []; // 当前进程展示的列表 var wrapPid = {}; // 展开的父进程 var TaskProcessLayerIndex = ''; // 进程详情弹窗的index var canScroll2TaskMangerPossess = true; // 是否可以定位到选中的进程 $('.t-mana .man-menu-sub span').click(function () { $(this).siblings().removeClass("on"); tab_name = $(this).attr('class'); $(this).addClass("on") // console.log(tab_name); if (tab_name == 'p_resource') { $('.resource-panel').addClass('resource-panel-show') $('.taskdivtable').addClass('divtable-hide') $('.ts-line').addClass('divtable-hide') } else if (tab_name !== 'p_resource on') { $('.resource-panel').removeClass('resource-panel-show') $('.taskdivtable').removeClass('divtable-hide') $('.ts-line').removeClass('divtable-hide') } search_val = $('.search-bar .search_input').val('') get_list_bytab(false); }); $('.search-bar .search_input').on({ 'keyup': function (e) { if (e.keyCode == 13) { get_list_bytab(); } }, 'blur': function () { get_list_bytab(true); }, }); $('.search-bar .glyphicon').click(function (e) { get_list_bytab(); }); var process_list_s = 0; get_process_list(); function setTableHead(data) { $.each(Object.keys(data.meter_head), function (index, item) { if (!$('.' + item).hasClass('disabled')) { if (data.meter_head[item]) { $('.' + item).addClass('active'); } else { $('.' + item).removeClass('active'); } } }); $('#change_thead').bind("contextmenu", function () { return false; }) $(".plug_menu").bind("contextmenu", function () { return false; }) $('#change_thead').mousedown(function (e) { e.preventDefault(); if (e.which == 3) { // 1 = 鼠标左键; 2 = 鼠标中键; 3 = 鼠标右键 var menu = $('.setting_ul'); var offset = $(this).offset(); var x = e.pageX - offset.left; var y = e.pageY - offset.top; var width = menu.outerWidth(); $(".plug_menu").removeAttr('style'); $(".setting_ul").removeClass('undisplay'); if ($('#change_thead').width() - x < width) { $(".plug_menu").css({ position: 'absolute', left: x - width + 150 + "px", top: y + 50 + "px", }).show(); } else { $(".plug_menu").css({ position: 'absolute', left: x + width + "px", top: y + 50 + "px", }).show(); } } $(".setting_ul").show(); }); } $('.layui-layer').not($('.setting_ul_li')).click(function () { $(".plug_menu").hide() $(".setting_ul").hide(); }); var isProcessing = false; // 设置标志 $('.setting_ul_li').off('click').click(function (e) { var that = $(this); e.stopPropagation(); // 检查标志 if (isProcessing) { return; } if (!$(this).hasClass('disabled')) { isProcessing = true; // 点击事件被触发,设置标志 var name = $(this).attr("name"); clearInterval(process_list_s); tmPostCallback('set_meter_head',{meter_head_name: name}, function(data){ isProcessing = false; // 操作完成,清除标志 if (!data) { layer.msg('设置失败'); } that.toggleClass('active'); get_process_list(null, null, false); clearInterval(process_list_s); process_list_s = setInterval(function () { if ($(".t-mana").length == 0) { clearInterval(process_list_s); process_list_s = 0; console.log('进程列表轮询任务已停止'); } get_process_list(null, null, true); }, 3000); }); } }); $('.setting_btn').on('click',function (e) { e.stopPropagation(); var offset = $('.man-menu-sub').offset(); var x = e.pageX - offset.left; var y = e.pageY - offset.top; var width = $('.man-menu-sub').outerWidth(); if ($('.man-menu-sub').width() - x < width) { $(".plug_menu").css({ position: 'absolute', right: "14.5px", top:"40px", }).toggle(); $('.setting_ul').addClass('undisplay') } $(".setting_ul").toggle(); }); if (process_list_s === 0) { process_list_s = setInterval(function () { if ($(".t-mana").length == 0) { clearInterval(process_list_s); process_list_s = 0; console.log('进程列表轮询任务已停止'); } get_process_list(null, null, true); }, 3000); } function get_list_bytab(isblur) { if (isblur && $('.search-bar .search_input').val() === search_val) { return; } search_val = $('.search-bar .search_input').val(); get_process_list(); switch (tab_name) { case 'p_list': $('.table_config').show(); $('.search-bar span').addClass('r56'); select_pid = ''; wrapPid = {}; canScroll2TaskMangerPossess = true; get_process_list(); break; case 'p_resource': $('.table_config').hide(); $('.search-bar span').removeClass('r56'); get_resource_list(); break; case 'p_run': $('.table_config').hide(); $('.search-bar span').removeClass('r56'); get_run_list(); break; case 'p_service': $('.table_config').hide(); $('.search-bar span').removeClass('r56'); get_service_list(); break; case 'p_network': $('.table_config').hide(); $('.search-bar span').removeClass('r56'); get_network_list(); break; case 'p_user': $('.table_config').hide(); $('.search-bar span').removeClass('r56'); get_user_list(); break; case 'p_cron': $('.table_config').hide(); $('.search-bar span').removeClass('r56'); get_cron_list(); break; case 'p_session': $('.table_config').hide(); $('.search-bar span').removeClass('r56'); get_who_list(); break; } } function get_process_list(sortx, reverse, rx) { if ($('.t-mana .man-menu-sub .on').attr('class') != 'p_list on') return; var cookie_key = 'task_process_sort'; var s_tmp = getCookie(cookie_key); if (sortx == undefined || sortx == null) { if (s_tmp) { sortx_arr = s_tmp.split('|'); sortx = sortx_arr[0]; reverse = sortx_arr[1]; } else { sortx = 'cpu_percent'; } } res_list = {True: 'False',False: 'True'}; setCookie(cookie_key, sortx + '|' + reverse); if (!rx) { var loadT = layer.msg('正在获取进程列表..', {icon: 16, time: 0, shade: [0.3, '#000']}) } tmPostCallback('get_process_list', {sortx: sortx,reverse: reverse,search:search_val}, function(rdata){ // console.log(rdata); if (!rx) layer.close(loadT); if ($('.t-mana .man-menu-sub .on').attr('class') != 'p_list on') return; if (rdata.status === false) { layer.closeAll(); layer.msg(rdata.msg, {icon: 2}); return; } var data = rdata.data; var year = new Date().getFullYear(); realProcess = []; originProcess = []; var list = data.process_list; for (var i = 0; i < list.length; i++) { list[i].haschild = false; if (list[i].children && list[i].children.length > 0) { list[i].haschild = true; } originProcess.push(list[i]); realProcess.push(list[i]); } var selectline = buildRealProcess(); var tbody_tr = createProcessTable(true, data); var tbody = '\ \ 应用名称\ PID\ 线程\ 用户\ CPU\ 内存\ io读\ io写\ 上行\ 下行\ 连接\ 状态\ 操作\ \ \ ' + tbody_tr + ''; $("#TaskManagement").html(tbody); var topMsg = '
\

CPU:' + data.info.cpu + '%

内存:' + toSize(data.info.mem) + '

\

负载(load average)

' + data.info.load_average[1] + ', ' + data.info.load_average[5] + ', ' + data.info.load_average[15] + '

\

进程数:' + data.process_list.length + '

磁盘:' + toSize(data.info.disk) + '

\
'; $("#load_average").html(topMsg).show(); $(".pro_" + sortx).append(''); $(".table-cont").css("height", "500px"); scropll2selectPossess(selectline); show_task(); setTableHead(data); if(getCookie('table_config_tip')=='false'||!getCookie('table_config_tip')){ layer.tips('点击可设置表头', '.setting_btn', { tips: [1, '#20a53a'], time: 3000 }); setCookie('table_config_tip',true); } // 清除掉之前绑定的滚动事件 $("#table-cont").unbind('scroll'); // 重新绑定滚动事件 $('#table-cont').scroll(task_manager_possess_scroll()); }); } function task_manager_possess_scroll() { var timer = null; var set2selected = null // 滚动节流 return function () { if (timer !== null) return timer = setTimeout(function () { timer = null canScroll2TaskMangerPossess = false if (set2selected !== null) clearTimeout(set2selected) // 最后一次滚动后2秒内不再滚动,才能滚动到选中的行 set2selected = setTimeout(function () { canScroll2TaskMangerPossess = true }, 2000) }, 500) } } function scropll2selectPossess(selectline) { if (canScroll2TaskMangerPossess && selectline !== -1) { var top = $('#table-cont')[0].scrollTop; // if(selectline > 2) if (selectline * 38 > top + 500 || selectline * 38 < top) { $('#table-cont')[0].scrollTo(0, (selectline - 2) * 38, 'smooth'); } } } function show_process_child(pid) { wrapPid[pid + ''] = true; // buildRealProcess() // createProcessTable() } function colp_process_child(pid) { // select_pid = pid+''; wrapPid[pid + ''] = false; // buildRealProcess() // createProcessTable() } function click_process_tr(e, pid, fpid) { select_pid = pid + ''; if (e.target.innerText === '结束' && fpid) { select_pid = fpid + ''; } var selectline = buildRealProcess() createProcessTable() scropll2selectPossess(selectline) } // 构建真实进程列表 function buildRealProcess() { realProcess = []; var len = originProcess.length; for (var i = 0; i < len; i++) { realProcess.push(originProcess[i]); if (wrapPid[originProcess[i].pid + '']) { // console.log(originProcess[i]); if (!originProcess[i].children) { wrapPid[originProcess[i].pid + ''] = false; continue; } var childSelected = false; for (var j = 0; j < originProcess[i].children.length; j++) { originProcess[i].children[j].fpid = originProcess[i].pid + '' originProcess[i].children[j].ischild = true originProcess[i].children[j].isselect = false if (originProcess[i].pid + '' === select_pid) { originProcess[i].children[j].isselect = true } if (originProcess[i].children[j].pid + '' === select_pid) { var childSelected = true; } realProcess.push(originProcess[i].children[j]); // 显示选中的父子进程 } if (childSelected) { for (var k = 0; k <= originProcess[i].children.length; k++) { realProcess.pop() } originProcess[i].isselect = true realProcess.push(originProcess[i]) for (var l = 0; l < originProcess[i].children.length; l++) { originProcess[i].children[l].isselect = true realProcess.push(originProcess[i].children[l]); } } } } for (var i = 0; i < realProcess.length; i++) { if (realProcess[i].pid + '' === select_pid) { return i// 返回选中的下标 } } return -1 } // 生成进程表格内容 function createProcessTable(getboday, data) { var tbody_tr = ''; for (var i = 0; i < realProcess.length; i++) { if (realProcess[i].status == '活动') realProcess[i].status = '活动'; var colp = realProcess[i].haschild ? '\ \ ' : ''; if (wrapPid[realProcess[i].pid + '']) { colp = '\ \ '; } var childNums = realProcess[i].haschild ? '(' + realProcess[i].children.length + ')' : ''; var namewidth = "max-width:120px;" if (realProcess[i].ischild) { namewidth = "max-width:80px;" } if (realProcess[i].haschild) { namewidth = "max-width:100px;" } var processName = '' + realProcess[i].ps + ''; var isProcessChild = realProcess[i].ischild ? 'process-child' : ''; var childStyle = realProcess[i].ischild ? 'width:100px' : ''; var selected = realProcess[i].pid + '' === select_pid || realProcess[i].isselect ? 'class="process-select"' : ''; var selected_one = realProcess[i].pid + '' === select_pid ? 'style="background-color:#F6F6F6;"' : ''; var kill_process = realProcess[i].haschild ? 'kill_process_all' : 'kill_process'; var tbody_td = ''; if ('io_read_bytes' in realProcess[i]){ tbody_td += '' + toSize(realProcess[i].io_read_speed).replace(' ', '') + ''; tbody_td += '' + toSize(realProcess[i].io_write_speed).replace(' ', '') + ''; tbody_td += '' + toSize(realProcess[i].up).replace(' ', '') + ''; tbody_td += '' + toSize(realProcess[i].down).replace(' ', '') + ''; } tbody_tr += '\ \ ' + colp + '\ \ ' + processName + '\ ' + childNums + '\ \ ' + realProcess[i].pid + '\ ' + realProcess[i].threads + '\ ' + realProcess[i].user + '\ ' + realProcess[i].cpu_percent + '%\ ' + toSize(realProcess[i].memory_used).replace(' ', '') + '\ '+tbody_td+'\ ' + realProcess[i].connects + '\ ' + realProcess[i].status + '\ 结束\ '; } if (getboday) return tbody_tr; $("#TaskManagement tbody").html(tbody_tr); } // 获取资源列表 function get_resource_list() { // console.log('get_resource_list----------'); var url = '/plugin?action=a&name=task_manager&s=cpu_status' // url = 'plugin?action=a&name=task_manager&s=get_disk_staus' var res_list = { True: 'False', False: 'True' } var reverse = 'True' $.post(url, function (data) { console.log(data); realProcess = [] originProcess = [] var list = data.process_list for (var i = 0; i < list.length; i++) { list[i].haschild = false if (list[i].children && list[i].children.length > 0) { list[i].haschild = true } originProcess.push(list[i]) realProcess.push(list[i]) } // console.log('realllll'); buildRealProcess() var tbody_tr = createProcessTable(true); var tbody = '\ \ 应用名称\ PID\ 线程\ 用户\ CPU\ 内存\ io读\ io写\ 上行\ 下行\ 连接\ 状态\ 操作\ \ \ ' + tbody_tr + '' $('#taskResourceTable').html(tbody); $(".table-cont").css("height", "220px"); }) $("#load_average").html('') } //查看计划任务列表 function get_cron_list() { var loadT = layer.msg('获取计划任务列表..', {icon: 16, time: 0, shade: [0.3, '#000']}); tmPostCallback('get_cron_list', {search:search_val}, function(rdata){ layer.close(loadT); var rdata = rdata.data; var tbody_tr = ''; for (var i = 0; i < rdata.length; i++) { tbody_tr += '\ ' + rdata[i].cycle + '\ ' + rdata[i].exe + '\ ' + rdata[i].ps + '\ 删除\ '; } var tbody = '\ \ 周期\ 执行\ 描述\ 操作\ \ \ ' + tbody_tr + ''; $("#TaskManagement").html(tbody); var topMsg = ''; $("#load_average").html(topMsg).hide(); $(".table-cont").css("height", "597px"); show_task(); }); } //查看网络状态 function get_network_list(rflush) { var loadT = layer.msg(lan.public.the_get, {icon: 16, time: 0, shade: [0.3, '#000']}); tmPostCallback('get_network_list', {search:search_val}, function(rdata){ layer.close(loadT); if (rdata.data['is_mac']){ tbody_tr += "mac无法使用"; tbody = "\ \ " + lan.index.net_protocol + "\ " + lan.index.net_address_dst + "\ " + lan.index.net_address_src + "\ " + lan.index.net_address_status + "\ " + lan.index.net_process + "\ " + lan.index.net_process_pid + "\ \ \ " + tbody_tr + ""; $("#TaskManagement").html(tbody); show_task(); return; } var rdata = rdata.data; var tbody_tr = ""; for (var i = 0; i < rdata.list.length; i++) { tbody_tr += "" + "" + rdata.list[i].type + "" + "" + rdata.list[i].laddr[0] + ":" + rdata.list[i].laddr[1] + "" + "" + (rdata.list[i].raddr.length > 1 ? "" + rdata.list[i].raddr[0] + ":" + rdata.list[i].raddr[1] : 'NONE') + "" + "" + rdata.list[i].status + "" + "" + rdata.list[i].process + "" + "" + rdata.list[i].pid + "" + ""; } tbody = "\ \ " + lan.index.net_protocol + "\ " + lan.index.net_address_dst + "\ " + lan.index.net_address_src + "\ " + lan.index.net_address_status + "\ " + lan.index.net_process + "\ " + lan.index.net_process_pid + "\ \ \ " + tbody_tr + ""; $("#TaskManagement").html(tbody); var topMsg = '
\
\

总发送:' + toSize(rdata.state.upTotal) + '

\

总接收:' + toSize(rdata.state.downTotal) + '

\
\
\

上行:' + toSize(rdata.state.up) + '

\

下行:' + toSize(rdata.state.down) + '

\
\
\

总发包:' + to_max(rdata.state.upPackets) + '

\

总收包:' + to_max(rdata.state.downPackets) + '

\
\
\

包发送/秒:' + to_max(rdata.state.upPackets_s) + '

\

包接收/秒:' + to_max(rdata.state.downPackets_s) + '

\
\
'; $("#load_average").html(topMsg).show(); $(".table-cont").css("height", "500px"); show_task(); }); } function to_max(num) { if (num > 10000) { num = num / 10000; if (num > 10000) { num = num / 10000; return num.toFixed(5) + ' 亿'; } return num.toFixed(5) + ' 万'; } return num; } //获取会话列表 function get_who_list() { var loadT = layer.msg('正在获取用户会话列表..', {icon: 16, time: 0, shade: [0.3, '#000']}); tmPostCallback('get_who', {search:search_val}, function(data){ layer.close(loadT); var rdata = data.data; var tbody_tr = ''; for (var i = 0; i < rdata.length; i++) { tbody_tr += '\ ' + rdata[i].user + '\ ' + rdata[i].pts + '\ ' + rdata[i].ip + '\ ' + rdata[i].date + '\ 强制断开\ '; } var tbody = '\ \ 用户\ PTS\ 登陆IP\ 登陆时间\ 操作\ \ \ ' + tbody_tr + ''; $("#TaskManagement").html(tbody); var topMsg = ''; $("#load_average").html(topMsg).hide(); $(".table-cont").css("height", "597px"); show_task(); }); } //获取启动列表 function get_run_list() { var loadT = layer.msg('正在获取启动项列表..', {icon: 16, time: 0, shade: [0.3, '#000']}); tmPostCallback('get_run_list', {search:search_val}, function(rdata){ layer.close(loadT); if (rdata.data['is_mac']){ tbody_tr += "mac无法使用"; var tbody = '\ \ 名称\ 启动路径\ 文件大小\ 文件权限\ 描述\ 操作\ \ \ ' + tbody_tr + ''; $("#TaskManagement").html(tbody); return; } var rdata = rdata.data; var tbody_tr = ''; for (var i = 0; i < rdata.run_list.length; i++) { tbody_tr += '\ ' + rdata.run_list[i].name + '\ ' + rdata.run_list[i].srcfile + '\ ' + toSize(rdata.run_list[i].size) + '\ ' + rdata.run_list[i].access + '\ ' + rdata.run_list[i].ps + '\ 编辑\ '; } var tbody = '\ \ 名称\ 启动路径\ 文件大小\ 文件权限\ 描述\ 操作\ \ \ ' + tbody_tr + ''; $("#TaskManagement").html(tbody); var topMsg = '
当前运行级别: level-' + rdata.run_level + '
'; $("#load_average").html(topMsg).show(); $(".table-cont").css("height", "500px"); show_task(); }); } //获取服务列表 function get_service_list() { var loadT = layer.msg('正在获取服务列表..', {icon: 16, time: 0, shade: [0.3, '#000']}); tmPostCallback('get_service_list', {search:search_val}, function(rdata){ layer.close(loadT); if (rdata.data['is_mac']){ tbody_tr += "mac无法使用"; var tbody = '\ \ 名称\ Level-0\ Level-1\ Level-2\ Level-3\ Level-4\ Level-5\ Level-6\ 描述\ 操作\ \ \ ' + tbody_tr + ''; $("#TaskManagement").html(tbody); return; } var rdata = rdata.data; var tbody_tr = ''; for (var i = 0; i < rdata.serviceList.length; i++) { tbody_tr += '\ ' + rdata.serviceList[i].name + '\ ' + rdata.serviceList[i].runlevel_0 + '\ ' + rdata.serviceList[i].runlevel_1 + '\ ' + rdata.serviceList[i].runlevel_2 + '\ ' + rdata.serviceList[i].runlevel_3 + '\ ' + rdata.serviceList[i].runlevel_4 + '\ ' + rdata.serviceList[i].runlevel_5 + '\ ' + rdata.serviceList[i].runlevel_6 + '\ ' + rdata.serviceList[i].ps + '\ 删除\ '; } var tbody = '\ \ 名称\ Level-0\ Level-1\ Level-2\ Level-3\ Level-4\ Level-5\ Level-6\ 描述\ 操作\ \ \ ' + tbody_tr + ''; $("#TaskManagement").html(tbody); var topMsg = '
当前运行级别: level-' + rdata.runlevel + '
'; $("#load_average").html(topMsg).show(); $(".table-cont").css("height", "500px"); show_task(); }); } //取用户列表 function get_user_list() { var loadT = layer.msg('正在获取用户列表..', {icon: 16, time: 0, shade: [0.3, '#000']}); tmPostCallback('get_user_list', {search:search_val}, function(data){ layer.close(loadT); var rdata = data.data; var tbody_tr = ''; for (var i = 0; i < rdata.length; i++) { tbody_tr += '\ ' + rdata[i].username + '\ ' + rdata[i].home + '\ ' + rdata[i].group + '\ ' + rdata[i].uid + '\ ' + rdata[i].gid + '\ ' + rdata[i].login_shell + '\ ' + rdata[i].ps + '\ 删除\ '; } var tbody = '\ \ 用户名\ home\ 用户组\ uid\ gid\ 登陆脚本\ 描述\ 操作\ \ \ ' + tbody_tr + ''; $("#TaskManagement").html(tbody); var topMsg = ''; $("#load_average").html(topMsg).hide(); $(".table-cont").css("height", "597px"); show_task(); }); } //删除用户 function userdel(user) { safeMessage('删除用户【' + user + '】', '删除后可能导致您的环境无法正常运行,继续吗?', function () { var loadT = layer.msg('正在删除用户[' + user + ']..', {icon: 16, time: 0, shade: [0.3, '#000']}); tmPostCallback('remove_user', {user:user}, function(rdata){ layer.close(loadT); var rdata = rdata.data; showMsg(rdata.msg, function(){ if (rdata.status) { get_user_list(); } },{icon: rdata.status ? 1 : 2}); }); }); } //结束进程 function kill_process(pid, fpid) { if (fpid) { select_pid = fpid; } var w = layer.confirm('您是否要结束 (' + pid + ') 进程?', { btn: ['结束', '取消'], //按钮 title: '结束' + pid, closeBtn: 2 }, function () { var loadT = layer.msg('正在结束进程[' + pid + ']..', {icon: 16, time: 0, shade: [0.3, '#000']}); tmPostCallback('kill_process', {pid:pid}, function(data){ layer.close(loadT); var rdata = data.data; layer.msg(rdata.msg, {icon: rdata.status ? 1 : 2}); if (rdata.status) { get_process_list(); } }); }, function () { layer.close(w); }) } //结束进程树 function kill_process_all(pid) { var w = layer.confirm('您是否要结束 (' + pid + ') 进程?', { btn: ['结束', '取消'], //按钮 title: '结束' + pid, closeBtn: 2 }, function () { var loadT = layer.msg('正在结束父进程[' + pid + ']..', {icon: 16, time: 0, shade: [0.3, '#000']}); tmPostCallback('kill_process_all', {pid:pid}, function(data){ layer.close(loadT); var rdata = data.data; showMsg(rdata.msg, function(){ if (rdata.status) { get_process_list(); } },{icon: rdata.status ? 1 : 2}); }); }, function () { layer.close(w); }); } //打开文件所在位置 function open_path(path) { var tmp = path.split('/'); tmp[tmp.length - 1] = ''; var path = '/' + tmp.join('/'); openPath(path); } //删除服务 function remove_service(serviceName) { safeMessage('删除服务【' + serviceName + '】', '删除后可能导致您的环境无法正常运行,继续吗?', function () { var loadT = layer.msg('正在删除服务[' + serviceName + ']..', {icon: 16, time: 0, shade: [0.3, '#000']}); tmPostCallback('remove_service', {serviceName:serviceName}, function(data){ var rdata = data.data; layer.close(loadT); showMsg(rdata.msg, function(){ if (rdata.status){ get_service_list(); } },{icon: rdata.status ? 1 : 2}) }); }); } //在线编辑文件 function online_edit_file(fileName) { onlineEditFile(0, fileName); } //删除计划任务 function remove_cron(index) { safeMessage('删除计划任务[' + index + ']', '删除后将无法恢复,继续吗?', function () { var loadT = layer.msg('正在删除计划任务..', {icon: 16, time: 0, shade: [0.3, '#000']}); tmPostCallback('remove_cron', {index:index}, function(rdata){ layer.close(loadT); var rdata = rdata.data; showMsg(rdata.msg, function(){ if (rdata.status) { get_cron_list(); } },{icon: rdata.status ? 1 : 2}); }); }); } //强制断开会话 function pkill_session(pts) { safeMessage('强制断开会话[' + pts + ']', '强制断开此会话吗?', function () { var loadT = layer.msg('正在断开会话..', {icon: 16, time: 0, shade: [0.3, '#000']}); tmPostCallback('pkill_session', {pts:pts}, function(data){ layer.close(loadT); var rdata = data.data; layer.msg(rdata.msg, {icon: rdata.status ? 1 : 2}); if (rdata.status){ get_who_list(); } }); }); } //设置服务启动级别状态 function set_runlevel_state(runlevel, serviceName) { var loadT = layer.msg('正在设置服务[' + serviceName + ']..', {icon: 16, time: 0, shade: [0.3, '#000']}); tmPostCallback('set_runlevel_state', {runlevel: runlevel,serviceName: serviceName}, function(data){ layer.close(loadT); var rdata = data.data; showMsg(rdata.msg, function(){ if (rdata.status) { get_service_list(); } },{icon: rdata.status ? 1 : 2}); }); } //查看进程详情 function get_process_info(pid) { var loadT = layer.msg('正在获取进程信息[' + pid + ']..', {icon: 16, time: 0, shade: [0.3, '#000']}); tmPostCallback('get_process_info', {pid:pid}, function(data){ layer.close(loadT); var rdata = data.data; fileBody = ''; for (var i = 0; i < rdata.open_files.length; i++) { fileBody += '' + rdata.open_files[i].path + '\ ' + rdata.open_files[i].mode + '\ ' + rdata.open_files[i].position + '\ ' + rdata.open_files[i].flags + '\ ' + rdata.open_files[i].fd + '\ '; } var cbody = '
\
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
名称' + rdata.name + 'PID' + rdata.pid + '状态' + rdata.status + '
父进程' + rdata.pname + '(' + rdata.ppid + ')用户' + rdata.user + '线程' + rdata.threads + '
Socket' + rdata.connects + 'io读' + toSize(rdata.io_read_bytes) + 'io写' + toSize(rdata.io_write_bytes) + '
启动时间' + getLocalTime(rdata.create_time) + '描述' + rdata.ps + '
启动命令' + rdata.comline.join(" ") + '
\
\

内存

\
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
rss' + toSize(rdata.memory_full.rss) + 'pss' + toSize(rdata.memory_full.pss) + 'uss' + toSize(rdata.memory_full.uss) + '
vms' + toSize(rdata.memory_full.vms) + 'swap' + toSize(rdata.memory_full.swap) + 'shared' + toSize(rdata.memory_full.shared) + '
data' + toSize(rdata.memory_full.data) + 'text' + toSize(rdata.memory_full.text) + 'dirty' + toSize(rdata.memory_full.dirty) + '
\
\

打开的文件列表

\
\
\ \ \ \ \ \ \ \ \ \ \ ' + fileBody + '\
文件modepositionflagsfd
\
\
\
\
\ \ \
'; TaskProcessLayerIndex = layer.open({ type: 1, title: '进程属性[' + rdata.name + '] -- ' + rdata.exe, area: '750px', closeBtn: 2, shadeClose: false, content: cbody }); show_jc_flie(); }); } //屏蔽指定IP function dropAddress(address) { layer.confirm(lan.index.net_doup_ip_msg, {icon: 3, closeBtn: 2}, function () { loadT = layer.msg(lan.index.net_doup_ip_to, {icon: 16, time: 0, shade: [0.3, '#000']}); $.post('/firewall?action=AddDropAddress', 'port=' + address + '&ps=' + lan.index.net_doup_ip_ps, function (rdata) { layer.close(loadT); layer.msg(rdata.msg, {icon: rdata.status ? 1 : 2}); }); }); } function show_task() { $(".ts-line").width($("#TaskManagement").width()); $("#TaskManagement tbody td").click(function () { // console.log('---'); $(this).parents("tr").addClass("active").siblings().removeClass("active"); }); var tableCont = document.querySelector('#table-cont'); //表格固定 var sct = tableCont.scrollTop; tableCont.querySelector('thead').style.transform = 'translateY(' + sct + 'px)'; tableCont.addEventListener('scroll', scrollHandle); } function show_jc_flie() { var tableJc = document.querySelector('#jc-file-table'); //文件表格固定 tableJc.addEventListener('scroll', scrollHandle); } function scrollHandle(e) { var scrollTop = this.scrollTop; this.querySelector('thead').style.transform = 'translateY(' + scrollTop + 'px)'; } var masterPluginTitle = $('.TaskManView').parents('.layui-layer'); // masterPluginTitle.append('
需求反馈
'); masterPluginTitle.on('click', '.bt-desired', function(){ bt_tools.nps({name:'任务管理器',type:26}) })