📜  powershell kill all node - Javascript(1)

📅  最后修改于: 2023-12-03 15:33:46.639000             🧑  作者: Mango

以'powershell kill all node - Javascript'作主题

在开发过程中,有时候需要结束所有 Node.js 进程。在 Windows 下,使用 PowerShell 可以很方便地实现。本文介绍如何使用 PowerShell 杀掉所有 Node.js 进程。

使用 PowerShell 命令行

在 PowerShell 命令行执行以下命令:

Get-Process node | Foreach-Object { $_.CloseMainWindow() }
Get-Process node | Foreach-Object { $_.Kill() }

第一条命令会尝试使用 Ctrl + C 来结束所有 Node.js 进程。如果该命令无法结束某些进程,就使用第二条命令直接杀死该进程。使用第二条命令可以确保所有 Node.js 进程都被结束。

封装成 JavaScript 脚本

以上 PowerShell 命令可以写成一个 JavaScript 脚本,代码如下:

const { spawn } = require('child_process')

const executeCommand = (command, args, cwd) => {
  const child = spawn(command, args, { cwd, shell: true })

  child.stdout.on('data', (data) => {
    console.log(data.toString())
  })

  child.stderr.on('data', (data) => {
    console.error(data.toString())
  })

  child.on('exit', (code, signal) => {
    console.log(`child process exited with code ${code} and signal ${signal}`)
  })

  child.on('error', (error) => {
    console.error(error)
  })
}

const killAllNodeProcesses = () => {
  executeCommand('Get-Process', ['node'], null)
  executeCommand('Foreach-Object', ['{ $_.CloseMainWindow() }'], null)
  executeCommand('Get-Process', ['node'], null)
  executeCommand('Foreach-Object', ['{ $_.Kill() }'], null)
}

killAllNodeProcesses()

该脚本使用了 Node.js 的 child_process 模块来执行 PowerShell 命令行。executeCommand 函数用来执行单个命令,killAllNodeProcesses 函数则按照顺序执行所有命令。

总结

本文介绍了如何使用 PowerShell 杀掉所有 Node.js 进程。我们知道,Node.js 进程有时候会在后台默默运行,占用系统资源,所以及时结束这些进程是非常必要的。在开发过程中,我们可以将 PowerShell 命令行封装成 JavaScript 脚本,方便使用。