🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
Socket

kill-port-process-cli

Package Overview
Dependencies
Maintainers
0
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

kill-port-process-cli - npm Package Compare versions

Comparing version

to
1.0.11

68

index.js
#!/usr/bin/env node
const { exec } = require('child_process');

@@ -21,8 +20,8 @@

const findPidCommand = port => process.platform === 'win32'
? `netstat -ano | findstr :${port}`
: `lsof -i:${port} -t`;
? `netstat -ano | findstr :${port}`
: `lsof -i:${port} -t`;
const killCommand = pid => process.platform === 'win32'
? `taskkill /PID ${pid} /F`
: `kill -9 ${pid}`;
? `taskkill /PID ${pid} /F`
: `kill -9 ${pid}`;

@@ -33,3 +32,2 @@ const findAndKillProcess = (port) => {

exec(findPidCommand(port), (err, stdout, stderr) => {
// 如果指定的端口没有进程在使用 则输出这个端口未被占用
if (err || stderr) {

@@ -40,24 +38,31 @@ resolve(`Port ${port} is not in use.`);

const pid = process.platform === 'win32'
? stdout.split('\n').find(line => line.includes('LISTEN'))?.trim().split(/\s+/).pop()
: stdout.split('\n').map(line => line.trim()).filter(line => line).pop();
const pids = process.platform === 'win32'
? stdout
.split('\n')
.filter(line => line.includes('LISTEN'))
.map(line => line.trim().split(/\s+/))
: stdout.split('\n').map(line => line.trim()).filter(line => line);
if (pid) {
console.log(`Process on port ${port} has PID: ${pid}`);
// 杀死进程
exec(killCommand(pid), (killErr, killStdout, killStderr) => {
if (killErr) {
reject(`Error killing process ${pid}: ${killErr}`);
return;
}
if (killStderr) {
reject(`stderr: ${killStderr}`);
return;
}
resolve(`Process ${pid} killed successfully on port ${port}.`);
});
} else {
if (pids.length === 0) {
resolve(`No process found on port ${port}`);
return;
}
console.log(`Processes on port ${port} have PIDs: ${pids.join(', ')}`);
Promise.all(
pids.map(pid =>
new Promise((killResolve, killReject) => {
exec(killCommand(pid), (killErr, killStdout, killStderr) => {
if (killErr || killStderr) {
killReject(`Error killing process ${pid}: ${killErr || killStderr}`);
return;
}
killResolve(`Process ${pid} killed successfully on port ${port}.`);
});
})
)
)
.then(killResults => resolve(killResults.join('\n')))
.catch(killErr => reject(killErr));
});

@@ -67,9 +72,10 @@ });

// 并行处理所有端口
Promise.all(ports.map(findAndKillProcess))
.then(results => {
results.forEach(result => console.log(result));
})
.catch(err => {
console.error(err);
});
.then(results => {
results.forEach(result => console.log(result));
})
.catch(err => {
console.error(err);
});
{
"name": "kill-port-process-cli",
"version": "1.0.10",
"version": "1.0.11",
"description": "A CLI tool to kill processes by port",

@@ -5,0 +5,0 @@ "main": "index.js",