美文网首页
命令运行

命令运行

作者: Gopal | 来源:发表于2018-02-23 11:47 被阅读20次

运行一个命令

shell.cd(currentProject.path)
this.childProcess = child_process.exec('npm run dev', (error, stdout, stderr) => {
  console.log('Gperror: '+ error + 'Gpstdout: ' + stdout + 'Gpstderr: ' + stderr)
})
this.childProcess.stdout.on('data', (data) => {
  console.log('dataGp:' + data)
  let resultMeg = data
  event.sender.send('local-run-reply', resultMeg)
})

停止npm run dev进程

首先只是杀死上面的this.childProcess是没有效果的

var childProcessPid =  this.childProcess.pid
console.log(childProcessPid)
console.log('isKilled:' + this.childProcess.killed)
this.childProcess.kill()
console.log('isKilled:' + this.childProcess.killed)
运行结果

原因

  • 没有杀对进程,因为我再去查看npm run dev这个进程的PID和上面杀死的PID是不一样的

命令行知识小结
window下
查找所有的进程
netstat -ano
查看某个端口号的进程
netstat -ano|findstr 端口号
根据进程号找到对应的进程名称
tasklist|findstr 进程号
根据端口号杀死进程
taskkill /F /pid 端口号

关闭端口 根据进程号寻找进程名称 Windows中杀死占用某个端口的进程

Mac下面是有区别的

Mac下的区别

具体实现

console.log(process.platform)
var cmd = process.platform == 'win32'?'netstat -ano':'ps aux'
var exec = require('child_process').exec
var port = '8019'

exec(cmd, function(err, stdout, stderr) {
  if (err) { 
    return console.log(err)
  }

  stdout.split('\n').filter(function(line) {
    var p = line.trim().split(/\s+/)
    var address = p[1]
    console.log(address)

    if (address != undefined) {
      if (address.split(':')[3] === port) {
        if (process.platform === 'win32') {
          exec('taskkill /F /pid ' + p[4], function(err, stdout, stderr) {
            if(err) {
              return console.log('释放指定端口失败!!')
            }
            console.log('占用指定端口的程序被成功杀掉!')
          })
        } else {
          exec('kill -9 ' + p[4], function(err, stdout, stderr) {
            if(err) {
              return console.log('释放指定端口失败!!')
            }
            console.log('占用指定端口的程序被成功杀掉!')
          })
        }
      }
    }
  })
})

遗留问题

使用netstat -aon去查找端口得出的结果可能跟其他平台的查找是否为一样的?

不同平台下杀死进程的方法有可能是不一样的,怎样去很好的避免?

相关文章

  • 后台不挂载运行

    命令:nohup 运行程序命令 & nohup : 不挂载运行 & : 后台运行

  • if 和else if 的用法

    if:不管前面的命令能不能运行成功,都运行if后面的命令 else if : 前面的命令运行不成功,运行else ...

  • ansible 运行命令

    ansible 运行命令 ansible运行命令,需要以下步骤: 通信 主机管理 运行命令 1. ansible通...

  • Linux关机与重启命令

    shutdown命令 其它关机命令 其它重启命令 系统运行级别 查询系统运行级别 退出登录命令

  • CentOS7系统下安装chrome

    依次运行以下命令: 注意:如果提示yum命令被锁定运行以下命令: 卸载chrome:

  • ubuntu16安装swoole

    1.安装命令 安装过程中出现报错: 运行提示命令 2.运行安装命令继续安装,phpize问题 运行命令 出现如下提...

  • 命令运行

    运行一个命令 停止npm run dev进程 首先只是杀死上面的this.childProcess是没有效果的 原...

  • master docker 2基础命令2

    查看容器内部信息 交互式运行容器命令: 让运行中的容器另外运行一个命令的命令: 在运行的nginx容器中运行bas...

  • linux下安装svn

    运行以下命令安装SVN。 运行以下命令查看SVN版本。 按以下步骤创建版本库: 运行以下命令创建目录。mkdir ...

  • R语言——Rstudio入门和基本概念

    Rstudio简介 1 Console窗口 命令窗口,可以使用命令行运行命令,每条命令运行的结果。命令窗口的最上边...

网友评论

      本文标题:命令运行

      本文链接:https://www.haomeiwen.com/subject/lpbwwxtx.html