pm2 ok
This commit is contained in:
parent
d656d07487
commit
71026d74e9
|
|
@ -11,25 +11,32 @@ serverPath=$(dirname "$rootPath")
|
|||
|
||||
install_tmp=${rootPath}/tmp/bt_install.pl
|
||||
|
||||
npm install pm2 -g
|
||||
|
||||
Install_pm2()
|
||||
Install_l2tp()
|
||||
{
|
||||
isStart=""
|
||||
while [[ "$isStart" == "" ]];
|
||||
do
|
||||
echo -e ".\c"
|
||||
sleep 0.5
|
||||
startTime=`date +%s`
|
||||
echo $startTime,'end'
|
||||
done
|
||||
echo '正在安装脚本文件...' > $install_tmp
|
||||
mkdir -p $serverPath/pm2
|
||||
echo '1.0' > $serverPath/pm2/version.pl
|
||||
mkdir -p $serverPath/l2tp
|
||||
echo '1.0' > $serverPath/l2tp/version.pl
|
||||
echo '安装完成' > $install_tmp
|
||||
}
|
||||
|
||||
Uninstall_pm2()
|
||||
Uninstall_l2tp()
|
||||
{
|
||||
rm -rf $serverPath/pm2
|
||||
rm -rf $serverPath/l2tp
|
||||
echo "卸载完成" > $install_tmp
|
||||
}
|
||||
|
||||
action=$1
|
||||
if [ "${1}" == 'install' ];then
|
||||
Install_pm2
|
||||
Install_l2tp
|
||||
else
|
||||
Uninstall_pm2
|
||||
Uninstall_l2tp
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -301,6 +301,48 @@ def uninstallMod():
|
|||
return public.returnJson(True, '卸载成功!')
|
||||
|
||||
|
||||
def nodeLogRun():
|
||||
args = getArgs()
|
||||
data = checkArgs(args, ['pname'])
|
||||
if not data[0]:
|
||||
return data[1]
|
||||
|
||||
pname = args['pname']
|
||||
return pm2LogDir() + '/logs/' + pname + '-out.log'
|
||||
|
||||
|
||||
def nodeLogErr():
|
||||
args = getArgs()
|
||||
data = checkArgs(args, ['pname'])
|
||||
if not data[0]:
|
||||
return data[1]
|
||||
|
||||
pname = args['pname']
|
||||
return pm2LogDir() + '/logs/' + pname + '-error.log'
|
||||
|
||||
|
||||
def nodeLogClearRun():
|
||||
args = getArgs()
|
||||
data = checkArgs(args, ['pname'])
|
||||
if not data[0]:
|
||||
return data[1]
|
||||
|
||||
pname = args['pname']
|
||||
path = pm2LogDir() + '/logs/' + pname + '-out.log'
|
||||
public.execShell('rm -rf ' + path + '&& touch ' + path)
|
||||
return public.returnJson(True, '清空运行成功')
|
||||
|
||||
|
||||
def nodeLogClearErr():
|
||||
args = getArgs()
|
||||
data = checkArgs(args, ['pname'])
|
||||
if not data[0]:
|
||||
return data[1]
|
||||
pname = args['pname']
|
||||
path = pm2LogDir() + '/logs/' + pname + '-error.log'
|
||||
public.execShell('rm -rf ' + path + '&& touch ' + path)
|
||||
return public.returnJson(True, '清空错误成功')
|
||||
|
||||
if __name__ == "__main__":
|
||||
func = sys.argv[1]
|
||||
if func == 'status':
|
||||
|
|
@ -321,6 +363,14 @@ if __name__ == "__main__":
|
|||
print pm2Start()
|
||||
elif func == 'get_logs':
|
||||
print pm2Log()
|
||||
elif func == 'node_log_run':
|
||||
print nodeLogRun()
|
||||
elif func == 'node_log_err':
|
||||
print nodeLogErr()
|
||||
elif func == 'node_log_clear_run':
|
||||
print nodeLogClearRun()
|
||||
elif func == 'node_log_clear_err':
|
||||
print nodeLogClearErr()
|
||||
elif func == 'versions':
|
||||
print pm2VerList()
|
||||
elif func == 'set_node_version':
|
||||
|
|
|
|||
|
|
@ -279,12 +279,18 @@ function nodeStart(pname){
|
|||
});
|
||||
}
|
||||
|
||||
function pm2RollingLogs(func,pname){
|
||||
var args = {'pname':pname}
|
||||
_args = JSON.stringify(args);
|
||||
pluginRollingLogs('pm2','',func, _args);
|
||||
}
|
||||
|
||||
function nodeLog(pname){
|
||||
var html = '';
|
||||
html += '<button onclick="nodeLogRun(\''+pname+'\')" class="btn btn-default btn-sm">运行日志</button>';
|
||||
html += '<button onclick="nodeLogRun(\''+pname+'\')" class="btn btn-default btn-sm">清空运行日志</button>';
|
||||
html += '<button onclick="nodeLogError(\''+pname+'\')" class="btn btn-default btn-sm">错误日志</button>';
|
||||
html += '<button onclick="nodeLogError(\''+pname+'\')" class="btn btn-default btn-sm">清空错误日志</button>';
|
||||
html += '<button onclick="pm2RollingLogs(\'node_log_run\',\''+pname+'\')" class="btn btn-default btn-sm">运行日志</button>';
|
||||
html += '<button onclick="nodeLogClearRun(\''+pname+'\')" class="btn btn-default btn-sm">清空运行日志</button>';
|
||||
html += '<button onclick="pm2RollingLogs(\'node_log_err\',\''+pname+'\')" class="btn btn-default btn-sm">错误日志</button>';
|
||||
html += '<button onclick="nodeLogClearError(\''+pname+'\')" class="btn btn-default btn-sm">清空错误日志</button>';
|
||||
|
||||
var loadOpen = layer.open({
|
||||
type: 1,
|
||||
|
|
@ -295,9 +301,18 @@ function nodeLog(pname){
|
|||
}
|
||||
|
||||
|
||||
function nodeLogError(pname){
|
||||
function nodeLogClearRun(pname){
|
||||
var data = 'pname=' + pname;
|
||||
pm2Post('node_log_clear_run', data, function(data){
|
||||
var rdata = $.parseJSON(data.data);
|
||||
layer.msg(rdata.msg,{icon:rdata.status?1:2});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
function nodeLogClearError(pname){
|
||||
var data = 'pname=' + pname;
|
||||
pm2Post('node_log_clear_err', data, function(data){
|
||||
var rdata = $.parseJSON(data.data);
|
||||
layer.msg(rdata.msg,{icon:rdata.status?1:2});
|
||||
});
|
||||
}
|
||||
|
|
@ -1852,6 +1852,59 @@ function pluginLogs(_name, version, func, line){
|
|||
},'json');
|
||||
},'json');
|
||||
}
|
||||
|
||||
|
||||
function pluginRollingLogs(_name, version, func, _args, line){
|
||||
if ( typeof(version) == 'undefined' ){
|
||||
version = '';
|
||||
}
|
||||
|
||||
var func_name = 'error_log';
|
||||
if ( typeof(func) != 'undefined' ){
|
||||
func_name = func;
|
||||
}
|
||||
|
||||
var file_line = 100;
|
||||
if ( typeof(line) != 'undefined' ){
|
||||
file_line = line;
|
||||
}
|
||||
|
||||
var reqTimer = null;
|
||||
|
||||
layer.open({
|
||||
type: 1,
|
||||
title: _name + '日志',
|
||||
area: '640px',
|
||||
end: function(){
|
||||
// console.log('end!!!');
|
||||
if (reqTimer){
|
||||
clearInterval(reqTimer);
|
||||
}
|
||||
},
|
||||
content:'<div class="change-default pd20" id="plugins_rolling_logs">\
|
||||
<textarea readonly="readonly" style="margin: 0px;width: 100%;height: 360px;background-color: #333;color:#fff; padding:0 5px" id="roll_info_log"></textarea>\
|
||||
</div>'
|
||||
});
|
||||
|
||||
$.post('/plugins/run', {name:_name, func:func_name, version:version,args:_args},function (data) {
|
||||
var fileName = data.data;
|
||||
reqTimer = setInterval(function(){
|
||||
$.post('/files/get_last_body', 'path=' + fileName+'&line='+file_line, function(rdata) {
|
||||
if (!rdata.status){
|
||||
return;
|
||||
}
|
||||
|
||||
if(rdata.data == '') {
|
||||
rdata.data = '当前没有日志!';
|
||||
}
|
||||
var ebody = '<textarea readonly="" style="margin: 0px;width: 100%;height: 360px;background-color: #333;color:#fff; padding:0 5px" id="roll_info_log">'+rdata.data+'</textarea>';
|
||||
$("#plugins_rolling_logs").html(ebody);
|
||||
var ob = document.getElementById('roll_info_log');
|
||||
ob.scrollTop = ob.scrollHeight;
|
||||
},'json');
|
||||
},1000);
|
||||
},'json');
|
||||
}
|
||||
/*** 其中功能,针对插件通过库使用 end ***/
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue