function myPost(method,args,callback, title){
var _args = null;
if (typeof(args) == 'string'){
_args = JSON.stringify(str2Obj(args));
} else {
_args = JSON.stringify(args);
}
var _title = '正在获取...';
if (typeof(title) != 'undefined'){
_title = title;
}
var loadT = layer.msg(_title, { icon: 16, time: 0, shade: 0.3 });
$.post('/plugins/run', {name:'supervisor', func:method, args:_args}, function(data) {
layer.close(loadT);
if (!data.status){
layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']});
return;
}
if(typeof(callback) == 'function'){
callback(data);
}
},'json');
}
function supList(page, search){
var _data = {};
if (typeof(page) =='undefined'){
var page = 1;
}
_data['page'] = page;
_data['page_size'] = 10;
if(typeof(search) != 'undefined'){
_data['search'] = search;
}
myPost('get_sup_list', _data, function(data){
var rdata = $.parseJSON(data.data);
// console.log(rdata.data);
var list = '';
for(i in rdata.data){
list += '
';
list += '' + rdata.data[i]['program'] +' | ';
list += '' + rdata.data[i]['command'] +' | ';
list += '' + rdata.data[i]['user'] +' | ';
list += '' + rdata.data[i]['pid'] +' | ';
list += '' + rdata.data[i]['numprocs'] +' | ';
list += '' + rdata.data[i]['priority'] +' | ';
list += '' + rdata.data[i]['runStatus'] +' | ';
list += '' + rdata.data[i]['runStatus'] +' | ';
list += '\
启动 | ' +
'修改 | ' +
'删除' +
' | ';
list += '
';
}
if(rdata.data.length==0){
list = "当前没有数据 |
";
}
var con = '';
con += '\
supervisord 常见进程状态详细如下:\
1:STOPPED:该进程已停止。 2:STOPPING:由于停止请求,该进程正在停止。\
3:RUNNING:该进程正在运行。 4:STARTING:该进程由于启动请求而开始。\
5:FATAL:该进程无法成功启动。\
6:BACKOFF:该进程进入“ 启动”状态,但随后退出的速度太快而无法移至“ 运行”状态。\
'
$(".soft-man-con").html(con);
$('#databasePage').html(rdata.page);
});
}
function startOrStop(name,status){
myPost('start_job',{'name':name,'status':status}, function(data){
var rdata = $.parseJSON(data.data);
// console.log(data);
layer.msg(rdata.msg,{icon:rdata.status?1:2});
setTimeout(function(){
supList(1,10);
},2000);
});
}
function updateJob(name){
myPost('get_job_info',{'name':name},function(data){
var rdata = $.parseJSON(data.data);
// console.log(rdata);
var defaultPath = $("#defaultPath").html();
var ulist = "启动用户
";
layer.open({
type: 1,
area: '500px',
title: '修改守护进程',
closeBtn: 2,
shift: 0,
shadeClose: false,
btn: ['确定', '取消'],
content: "",
yes: function(index, layero){
// console.log(index,layero);
var options = ['name','user','numprocs','priority'];
var opval = {};
for(var i in options){
opval[options[i]] = $('[name="'+ options[i] +'"]').val();
if(opval[options[i]] == ''){
if(options[i] == 'user'){
layer.msg('启动用户不能为空');
return false;
}else if(options[i] == 'priority'){
layer.msg('启动优先级不能为空');
return false;
}else if(options[i] == 'numprocs'){
layer.msg('进程数量不能为空!');
return false;
}
}
}
var numprocs = $('[name=numprocs]').val();
if (!(/(^[1-9]\d*$)/.test(numprocs))) {
layer.msg('进程数量请输入正整数')
return false;
}
myPost("update_job", opval, function(data){
rdata = $.parseJSON(data.data);
layer.msg(rdata.msg,{icon:rdata.status?1:2});
rdata.status ? layer.close(index):'';
supList(1,10);
})
return;
}
});
});
}
//卸载软件
function delJob(name) {
layer.confirm(msgTpl('是否删除守护进程[{1}]?', [name]), { icon: 3, closeBtn: 2 }, function() {
///////////////////////////////////////
var data = {'name': name};
var loadT = layer.msg('正在处理,请稍候...', { icon: 16, time: 0, shade: [0.3, '#000'] });
myPost('del_job', data, function(rdata){
layer.close(loadT)
rdata = $.parseJSON(rdata.data);
supList(1,10);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
});
///////////////////////////////////////
});
}
//添加站点
function supAdd() {
myPost('get_user_list',{},function(data){
var rdata = $.parseJSON(data.data);
// console.log(rdata);
var defaultPath = $("#defaultPath").html();
var ulist = "启动用户
";
layer.open({
type: 1,
area: '500px',
title: '添加守护进程',
closeBtn: 2,
shift: 0,
shadeClose: false,
btn: ['确定', '取消'],
content: "",
yes: function(index, layero){
// console.log(index,layero);
var options = ['name','user','path','command','numprocs'];
var opval = {};
for(var i in options){
opval[options[i]] = $('[name="'+ options[i] +'"]').val();
if(opval[options[i]] == ''){
if(options[i] == 'name'){
layer.msg('进程名称不能为空');
return false;
}else if(options[i] == 'user'){
layer.msg('启动用户不能为空');
return false;
}else if(options[i] == 'path'){
layer.msg('运行目录不能为空');
return false;
}else if(options[i] == 'command'){
layer.msg('启动命令不能为空');
return false;
}else if(options[i] == 'numprocs'){
layer.msg('进程数量不能为空!');
return false;
}
}
}
var numprocs = $('[name=numprocs]').val();
if (!(/(^[1-9]\d*$)/.test(numprocs))) {
layer.msg('进程数量请输入正整数')
return false;
}
myPost("add_job", opval, function(data){
rdata = $.parseJSON(data.data);
layer.msg(rdata.msg,{icon:rdata.status?1:2});
rdata.status ? layer.close(index):'';
supList(1,10);
})
return;
}
});
});
}