08335 / hivui-platform-template
hivui平台项目模板
Newer
Older
hivui-platform-template / build / pm2.js
12896 on 31 Jan 2023 Jenkins commit
#!/usr/bin/env node
/*
// 本目录 是管理node 服务器,使用pm2 
// 通过package.json 里script 命令pm2 会调用 processes.json 配置 
// 然后  processes.json 配置  里 script选项会找到 这个文件执行
'use strict';
*/ 


var cp = require('child_process'); 
//通过端口获取 进程id
const GetPortProcessId = function (port) {
    //`netstat -antp|grep ":::${port}" | awk '{print $7}'`
    let res = cp.spawnSync(`netstat -antp|grep ":::${port}" | awk '{print $7}'`, [], {
        encoding: 'utf8',
        // stdio: ['inherit','pipe'],
        stdio: 'pipe',
        // 仅在当前运行环境为 Windows 时,才使用 shell
        shell: process.platform === 'win32' ? true : '/bin/sh'
      })
      ,processId;
    if (res.stdout) {
        console.log('---------已找到冲突进程------------\n',res.stdout,'\n')
        processId =  res.stdout.split('/')[0]
    }
    return processId;
}
function start(){
    require('vite/bin/vite.js');
}

const processesCfg = require('../processes.json');
let args = processesCfg.apps[0].args.split(' ');
let port = args[args.length-1];
 //判断占用,找到进程
 let processId = GetPortProcessId(port);
 if (processId > 1) {
    // process.kill(processId);
}else{
    start();
}