mirror of https://github.com/midoks/mdserver-web
pull/109/head
parent
d6768ec0f8
commit
e4b9c5bf2e
@ -0,0 +1,81 @@ |
||||
#! /bin/bash |
||||
# |
||||
# memcached: MemCached Daemon |
||||
# |
||||
# chkconfig: - 90 25 |
||||
# description: MemCached Daemon |
||||
# |
||||
### BEGIN INIT INFO |
||||
# Provides: memcached |
||||
# Required-Start: $syslog |
||||
# Required-Stop: $syslog |
||||
# Should-Start: $local_fs |
||||
# Should-Stop: $local_fs |
||||
# Default-Start: 2 3 4 5 |
||||
# Default-Stop: 0 1 6 |
||||
# Short-Description: memcached - Memory caching daemon |
||||
# Description: memcached - Memory caching daemon |
||||
### END INIT INFO |
||||
|
||||
IP=127.0.0.1 |
||||
PORT=11211 |
||||
USER=root |
||||
MAXCONN=1024 |
||||
CACHESIZE=64 |
||||
OPTIONS="" |
||||
|
||||
RETVAL=0 |
||||
prog="memcached" |
||||
|
||||
start () { |
||||
echo -n $"Starting $prog: " |
||||
{$PATH}/memcached/bin/memcached -d -l $IP -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /var/run/memcached.pid $OPTIONS |
||||
if [ "$?" != 0 ] ; then |
||||
echo " failed" |
||||
exit 1 |
||||
else |
||||
touch /var/lock/subsys/memcached |
||||
echo " done" |
||||
fi |
||||
} |
||||
stop () { |
||||
echo -n $"Stopping $prog: " |
||||
if [ ! -e /var/run/$prog.pid ]; then |
||||
echo -n $"$prog is not running." |
||||
exit 1 |
||||
fi |
||||
kill `cat /var/run/memcached.pid` |
||||
if [ "$?" != 0 ] ; then |
||||
echo " failed" |
||||
exit 1 |
||||
else |
||||
rm -f /var/lock/subsys/memcached |
||||
rm -f /var/run/memcached.pid |
||||
echo " done" |
||||
fi |
||||
} |
||||
|
||||
restart () { |
||||
$0 stop |
||||
sleep 2 |
||||
$0 start |
||||
} |
||||
|
||||
# See how we were called. |
||||
case "$1" in |
||||
start) |
||||
start |
||||
;; |
||||
stop) |
||||
stop |
||||
;; |
||||
restart|reload) |
||||
restart |
||||
;; |
||||
*) |
||||
echo $"Usage: $0 {start|stop|status|restart|reload}" |
||||
exit 1 |
||||
;; |
||||
esac |
||||
|
||||
exit $? |
@ -1,15 +1,15 @@ |
||||
{ |
||||
"title":"插件开发说明", |
||||
"title":"开发说明", |
||||
"tip":"soft", |
||||
"name":"readme", |
||||
"type":"扩展", |
||||
"ps":"(mdserver-web)插件产开发说明,每个版本可能有所变化!", |
||||
"ps":"[mdserver-web]插件产开发说明,每个版本可能有所变化!", |
||||
"versions": "0.1", |
||||
"shell":"install.sh", |
||||
"checks":"server/readme", |
||||
"path":"server/readme", |
||||
"author":"mdserver-web", |
||||
"home":"github.com/midoks/mdserver-web", |
||||
"home":"https://github.com/midoks/mdserver-web", |
||||
"date":"2018-11-30", |
||||
"pid":"5" |
||||
} |
@ -1,170 +0,0 @@ |
||||
function redisOp(a, b) { |
||||
|
||||
var c = "name=" + a + "&func=" + b; |
||||
var d = ""; |
||||
|
||||
switch(b) { |
||||
case "stop":d = '停止';break; |
||||
case "start":d = '启动';break; |
||||
case "restart":d = '重启';break; |
||||
case "reload":d = '重载';break; |
||||
} |
||||
layer.confirm( '您真的要{1}{2}服务吗?'.replace('{1}', d).replace('{2}', a), {icon:3,closeBtn: 2}, function() { |
||||
var e = layer.msg('正在{1}{2}服务,请稍候...'.replace('{1}', d).replace('{2}', a), {icon: 16,time: 0}); |
||||
$.post("/plugins/run", c, function(g) { |
||||
layer.close(e); |
||||
|
||||
var f = g.data == 'ok' ? '{1}服务已{2}'.replace('{1}', a).replace('{2}', d):'{1}服务{2}失败!'.replace('{1}', a).replace('{2}', d); |
||||
layer.msg(f, {icon: g.data == 'ok' ? 1 : 2}); |
||||
|
||||
if(b != "reload" && g.data == 'ok') { |
||||
if (b == 'start') { |
||||
setRedisService('redis', true); |
||||
} else if (b=='stop'){ |
||||
setRedisService('redis', false); |
||||
} else { |
||||
} |
||||
} |
||||
if(g.data != 'ok') { |
||||
layer.msg(g.data, {icon: 2,time: 0,shade: 0.3,shadeClose: true}); |
||||
} |
||||
},'json').error(function() { |
||||
layer.close(e); |
||||
layer.msg('操作成功!', {icon: 1}); |
||||
}); |
||||
}) |
||||
} |
||||
|
||||
//服务
|
||||
function setRedisService(name, status){ |
||||
var serviceCon ='<p class="status">当前状态:<span>'+(status ? '开启' : '关闭' )+ |
||||
'</span><span style="color: '+ |
||||
(status?'#20a53a;':'red;')+ |
||||
' margin-left: 3px;" class="glyphicon ' + (status?'glyphicon glyphicon-play':'glyphicon-pause')+'"></span></p><div class="sfm-opt">\ |
||||
<button class="btn btn-default btn-sm" onclick="redisOp(\''+name+'\',\''+(status?'stop':'start')+'\')">'+(status?'停止':'启动')+'</button>\ |
||||
<button class="btn btn-default btn-sm" onclick="redisOp(\''+name+'\',\'restart\')">重启</button>\ |
||||
<button class="btn btn-default btn-sm" onclick="redisOp(\''+name+'\',\'reload\')">重载配置</button>\ |
||||
</div>'; |
||||
$(".soft-man-con").html(serviceCon); |
||||
} |
||||
|
||||
|
||||
//服务
|
||||
function redisService(){ |
||||
|
||||
$.post('/plugins/run', {name:'redis', func:'status'}, function(data) { |
||||
console.log(data); |
||||
if(!data.status){ |
||||
layer.msg(data.msg,{icon:0,time:3000,shade: [0.3, '#000']}); |
||||
return; |
||||
} |
||||
if (data.data == 'start'){ |
||||
setRedisService('redis', true); |
||||
} else { |
||||
setRedisService('redis', false); |
||||
} |
||||
},'json'); |
||||
} |
||||
|
||||
redisService(); |
||||
|
||||
|
||||
//配置修改 --- start
|
||||
function redisConfig(type){ |
||||
|
||||
var con = '<p style="color: #666; margin-bottom: 7px">提示:Ctrl+F 搜索关键字,Ctrl+G 查找下一个,Ctrl+S 保存,Ctrl+Shift+R 查找替换!</p><textarea class="bt-input-text" style="height: 320px; line-height:18px;" id="textBody"></textarea>\ |
||||
<button id="OnlineEditFileBtn" class="btn btn-success btn-sm" style="margin-top:10px;">保存</button>\ |
||||
<ul class="help-info-text c7 ptb15">\ |
||||
<li>此处为redis主配置文件,若您不了解配置规则,请勿随意修改。</li>\ |
||||
</ul>'; |
||||
$(".soft-man-con").html(con); |
||||
|
||||
var loadT = layer.msg('配置文件路径获取中...',{icon:16,time:0,shade: [0.3, '#000']}); |
||||
$.post('/plugins/run', {name:'redis', func:'conf'},function (data) { |
||||
layer.close(loadT); |
||||
|
||||
var loadT2 = layer.msg('文件内容获取中...',{icon:16,time:0,shade: [0.3, '#000']}); |
||||
var fileName = data.data; |
||||
$.post('/files/get_body', 'path=' + fileName, function(rdata) { |
||||
layer.close(loadT2); |
||||
if (!rdata.status){ |
||||
layer.msg(rdata.msg,{icon:0,time:2000,shade: [0.3, '#000']}); |
||||
return; |
||||
} |
||||
$("#textBody").empty().text(rdata.data.data); |
||||
$(".CodeMirror").remove(); |
||||
var editor = CodeMirror.fromTextArea(document.getElementById("textBody"), { |
||||
extraKeys: { |
||||
"Ctrl-Space": "autocomplete", |
||||
"Ctrl-F": "findPersistent", |
||||
"Ctrl-H": "replaceAll", |
||||
"Ctrl-S": function() { |
||||
redisConfSafe(fileName); |
||||
} |
||||
}, |
||||
lineNumbers: true, |
||||
matchBrackets:true, |
||||
}); |
||||
editor.focus(); |
||||
$(".CodeMirror-scroll").css({"height":"300px","margin":0,"padding":0}); |
||||
$("#OnlineEditFileBtn").click(function(){ |
||||
$("#textBody").text(editor.getValue()); |
||||
redisConfSave(fileName); |
||||
}); |
||||
},'json'); |
||||
},'json'); |
||||
} |
||||
|
||||
//配置保存
|
||||
function redisConfSave(fileName) { |
||||
var data = encodeURIComponent($("#textBody").val()); |
||||
var encoding = 'utf-8'; |
||||
var loadT = layer.msg('保存中...', { |
||||
icon: 16, |
||||
time: 0 |
||||
}); |
||||
$.post('/files/save_body', 'data=' + data + '&path=' + fileName + '&encoding=' + encoding, function(rdata) { |
||||
layer.close(loadT); |
||||
layer.msg(rdata.msg, { |
||||
icon: rdata.status ? 1 : 2 |
||||
}); |
||||
},'json'); |
||||
} |
||||
//配置修改 --- end
|
||||
|
||||
//redis负载状态 start
|
||||
function redisStatus() { |
||||
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); |
||||
$.post('/plugins/run', {name:'redis', func:'run_info'}, function(data) { |
||||
layer.close(loadT); |
||||
if (!data.status){ |
||||
layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']}); |
||||
return; |
||||
} |
||||
|
||||
var rdata = $.parseJSON(data.data); |
||||
hit = (parseInt(rdata.keyspace_hits) / (parseInt(rdata.keyspace_hits) + parseInt(rdata.keyspace_misses)) * 100).toFixed(2); |
||||
var Con = '<div class="divtable">\ |
||||
<table class="table table-hover table-bordered" style="width: 490px;">\ |
||||
<thead><th>字段</th><th>当前值</th><th>说明</th></thead>\ |
||||
<tbody>\ |
||||
<tr><th>uptime_in_days</th><td>' + rdata.uptime_in_days + '</td><td>已运行天数</td></tr>\ |
||||
<tr><th>tcp_port</th><td>' + rdata.tcp_port + '</td><td>当前监听端口</td></tr>\ |
||||
<tr><th>connected_clients</th><td>' + rdata.connected_clients + '</td><td>连接的客户端数量</td></tr>\ |
||||
<tr><th>used_memory_rss</th><td>' + toSize(rdata.used_memory_rss) + '</td><td>Redis当前占用的系统内存总量</td></tr>\ |
||||
<tr><th>used_memory</th><td>' + toSize(rdata.used_memory) + '</td><td>Redis当前已分配的内存总量</td></tr>\ |
||||
<tr><th>used_memory_peak</th><td>' + toSize(rdata.used_memory_peak) + '</td><td>Redis历史分配内存的峰值</td></tr>\ |
||||
<tr><th>mem_fragmentation_ratio</th><td>' + rdata.mem_fragmentation_ratio + '%</td><td>内存碎片比率</td></tr>\ |
||||
<tr><th>total_connections_received</th><td>' + rdata.total_connections_received + '</td><td>运行以来连接过的客户端的总数量</td></tr>\ |
||||
<tr><th>total_commands_processed</th><td>' + rdata.total_commands_processed + '</td><td>运行以来执行过的命令的总数量</td></tr>\ |
||||
<tr><th>instantaneous_ops_per_sec</th><td>' + rdata.instantaneous_ops_per_sec + '</td><td>服务器每秒钟执行的命令数量</td></tr>\ |
||||
<tr><th>keyspace_hits</th><td>' + rdata.keyspace_hits + '</td><td>查找数据库键成功的次数</td></tr>\ |
||||
<tr><th>keyspace_misses</th><td>' + rdata.keyspace_misses + '</td><td>查找数据库键失败的次数</td></tr>\ |
||||
<tr><th>hit</th><td>' + hit + '%</td><td>查找数据库键命中率</td></tr>\ |
||||
<tr><th>latest_fork_usec</th><td>' + rdata.latest_fork_usec + '</td><td>最近一次 fork() 操作耗费的微秒数</td></tr>\ |
||||
<tbody>\ |
||||
</table></div>' |
||||
$(".soft-man-con").html(Con); |
||||
},'json'); |
||||
} |
||||
//redis负载状态 end
|
Loading…
Reference in new issue