zoukankan      html  css  js  c++  java
  • Node 端口安全

    /**
     * 判断端口号是否被占用,占用的话直接杀死
     * @Param port 端口号
     * @Param 完成回调
     * */
    
    export default const portSecurity = (port , callback) => {
        const {exec} = require('child_process')
        const cmd = `netstat -ano|findstr ${port}`
        exec(cmd, (error, stdout, stderr) => {
            /* 查看端口是否被占用, stdout 有值则说明占用了*/
            console.log(1, error) // null
            console.log(2, stdout) // => 2 '  TCP    0.0.0.0:3000           0.0.0.0:0              LISTENING       23732'
            if (!error && stdout) { // 已存在端口
                let pid = null
                stdout.trim().split(/[
    |
    ]/).forEach(item => {
                    if (item.indexOf('LISTEN') !== -1 && !pid) {
                        pid = item.split(/s+/).pop()
                    }
                })
                if (!pid) {
                    console.log(`端口${port}未被占用`)
                    callback && callback()
                } else {
                    // 然后拿到端口id 就是上面的23732
                    console.log(`存在冲突端口:${port},pid为${pid}`)
                    exec(`taskkill /pid ${pid} -t -f`, (error, stdout) => { // 直接杀死
                        console.log(`冲突端口:${port},pid为${pid}已被关闭`)
                        callback && callback()
                    })
                }
    
            } else {
                console.log(`端口${port}未被占用,继续进行`)
                callback && callback()
            }
        })
    }
    
    
    为之则易,不为则难。
  • 相关阅读:
    roadmap
    Tree and Permutation
    码队的新桌游
    关于优先队列重载运算符
    YJJ's Salesman
    E. Natasha, Sasha and the Prefix Sums
    C. Anna, Svyatoslav and Maps
    D1. Kirk and a Binary String (easy version)
    C. Almost Equal
    D. Shortest Cycle
  • 原文地址:https://www.cnblogs.com/coderDemo/p/14510257.html
Copyright © 2011-2022 走看看