This commit is contained in:
midoks
2022-06-16 23:24:09 +08:00
parent 079b78c679
commit 544a37a46d
2 changed files with 129 additions and 5 deletions
+49 -4
View File
@@ -271,7 +271,7 @@ def getSupList():
return mw.getJson(data)
def getUserList():
def getUserListData():
user = getServerDir() + "/user.txt"
if not os.path.isfile(user):
os.system(r"touch {}".format(user))
@@ -291,6 +291,11 @@ def getUserList():
if user in special:
continue
user_list.append(user)
return user_list
def getUserList():
user_list = getUserListData()
return mw.getJson(user_list)
@@ -366,10 +371,47 @@ def delJob():
def updateJob():
args = getArgs()
data = checkArgs(args, ['name'])
data = checkArgs(args, ["name", 'user', 'numprocs', 'priority'])
if not data[0]:
return data[1]
user = args['user']
numprocs = args['numprocs']
priority = args['priority']
name = args['name']
programFile = getServerDir() + "/conf.d/" + name + ".ini"
with open(programFile, "r") as fr:
infos = fr.readlines()
mess = {}
infos = []
for line in infos:
if "command=" in line.strip():
mess["command"] = line.strip().split('=')[1]
if "path=" in line.strip():
mess["path"] = line.strip().split('=')[1]
log_dir = getServerDir() + '/log/'
w_body = ""
w_body += "[program:" + name + "]" + "\n"
w_body += "command=" + mess["command"] + "\n"
w_body += "directory=" + mess["path"] + "\n"
w_body += "autorestart=true" + "\n"
w_body += "startsecs=3" + "\n"
w_body += "startretries=3" + "\n"
w_body += "stdout_logfile=" + log_dir + name + ".out.log" + "\n"
w_body += "stderr_logfile=" + log_dir + name + ".err.log" + "\n"
w_body += "stdout_logfile_maxbytes=2MB" + "\n"
w_body += "stderr_logfile_maxbytes=2MB" + "\n"
w_body += "user=" + user + "\n"
w_body += "priority=999" + "\n"
w_body += "numprocs={0}".format(numprocs) + "\n"
w_body += "process_name=%(program_name)s_%(process_num)02d"
mw.writeFile(programFile, w_body)
return mw.returnJson(True, '修改守护进程成功!')
def getJobInfo():
@@ -379,10 +421,13 @@ def getJobInfo():
return data[1]
name = args['name']
mess = {}
infos = []
info = {}
program = getServerDir() + "/conf.d/" + name + ".ini"
with open(program, "r") as fr:
infos = fr.readlines()
mess = {}
for line in infos:
if "user=" in line.strip():
mess["user"] = line.strip().split('=')[1]
@@ -390,7 +435,7 @@ def getJobInfo():
mess["numprocs"] = line.strip().split('=')[1]
if "priority=" in line.strip():
mess["priority"] = line.strip().split('=')[1]
userlist = getUserList()
userlist = getUserListData()
info["userlist"] = userlist
info["daemoninfo"] = mess
return mw.getJson(info)
+80 -1
View File
@@ -107,7 +107,86 @@ function supList(page, search){
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 = "<div class='line'><span class='tname'>启动用户</span><select class='bt-input-text' name='user' id='c_k3' style='width:270px'>";
for (var i=0;i<rdata['userlist'].length;i++) {
if (rdata['userlist'][i] == rdata['daemoninfo']['user']){
ulist += "<option value='"+rdata['userlist'][i]+"' selected>"+rdata['userlist'][i]+"</option>";
} else {
ulist += "<option value='"+rdata['userlist'][i]+"'>"+rdata['userlist'][i]+"</option>";
}
}
ulist += "</select><span style='color:red;margin-left: 10px;width:270px;'></span></div>";
layer.open({
type: 1,
area: '500px',
title: '修改守护进程',
closeBtn: 2,
shift: 0,
shadeClose: false,
btn: ['确定', '取消'],
content: "<div class='bt_conter bt-form pd15' style='height:auto;width:100%;'>\
<div class='line'>\
<span class='tname'>名称</span>\
<div class='info-r c4'>\
<input id='name' class='bt-input-text' type='text' name='name' value='"+name+"' placeholder='请输入名称' style='width:270px' readonly/>\
</div>\
</div>\
"+ulist+"\
<div class='line'>\
<span class='tname'>进程数量</span>\
<div class='info-r c4'>\
<input id='numprocs' class='bt-input-text' type='text' name='numprocs' value='"+rdata['daemoninfo']['numprocs']+"' style='width:270px' />\
</div>\
</div>\
<div class='line'>\
<span class='tname'>启动优先级</span>\
<div class='info-r c4'>\
<input id='priority' class='bt-input-text' type='text' name='priority' value='"+rdata['daemoninfo']['priority']+"' style='width:270px' />\
</div>\
</div>\
</div>",
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;
}
});
});
}
@@ -136,7 +215,7 @@ function supAdd() {
var defaultPath = $("#defaultPath").html();
var ulist = "<div class='line'><span class='tname'>启动用户</span><select class='bt-input-text' name='user' id='c_k3' style='width:270px'>";
for (var i=rdata.length-1;i>=0;i--) {
for (var i=0;i<rdata.length;i++) {
ulist += "<option value='"+rdata[i]+"'>"+rdata[i]+"</option>";
}