📅  最后修改于: 2023-12-03 14:44:37.142000             🧑  作者: Mango
在使用Node.js进行开发的过程中,有时候我们可能需要杀掉某个端口号已被占用的进程。这时候,Node.js就提供了一种简单的方法来做到这一点。
我们需要使用 kill
命令来手动结束进程。首先,我们需要使用以下命令来查找正在运行的进程:
sudo lsof -i :{PORT} #其中{PORT}为进程的端口号
这将列出所有正在占用指定端口号的进程。接着,我们需要使用以下命令来终止进程:
kill -9 {PID} #其中{PID}为进程的ID
这将强制结束我们找到的进程。请注意,这种方法需要手动执行,并且每次都要重新输入命令。
我们可以使用一个叫做 fkill
的第三方模块来轻松地杀死Node.js应用程序中正在使用的端口。
npm install fkill -g # 全局安装
在终端中,我们需要使用以下命令来杀死正在占用指定端口号的进程:
fkill :{PORT}
这将自动查找并杀死正在占用指定端口号的进程。请注意,如果多个进程正在使用相同的端口号,这个命令将强制关闭所有的进程。如果需要杀死特定的进程,请使用方法一。
我们也可以使用Node.js自带的 child_process
模块来杀死正在占用指定端口号的进程。
const { spawn } = require('child_process');
const killProcess = (port) => {
const childProcess = spawn('kill', ['-9', $(lsof).pid]);
childProcess.on('exit', (code, signal) => {
if (code !== 0) {
console.error(`Process not terminated with signal ${signal}`);
}
});
}
killProcess(PORT); //其中{PORT}为进程的端口号
这将使用 lsof
命令来获取正在占用指定端口号的进程的PID,并将 kill
命令用于终止进程。
请注意,这三种方法都可以用来杀死正在占用指定端口号的进程,但是 fkill
和 child_process
方法可能需要在操作系统中安装某些额外的命令或工具才能正常使用。因此,建议优先使用方法一来手动杀死进程。