Files
open-web-agent-rs/killport.js
2025-05-28 19:48:50 -04:00

52 lines
1.7 KiB
JavaScript

#!/usr/bin/env node
import * as child_process from "node:child_process";
const args = process.argv.slice(2);
const port = args.length > 0 ? parseInt(args[0], 10) : null;
if (!port || isNaN(port)) {
console.error('Please provide a valid port number');
process.exit(1);
}
export const killProcessOnPort = (port) => {
return new Promise((resolve, reject) => {
// Find the PID of the process using the specified port
child_process.exec(`lsof -t -i :${port}`.trim(), (err, stdout) => {
if (err) {
// Handle command error (such as permission denied)
if (err.code !== 1) {
console.error(`Error finding process on port ${port}:`, err);
return reject(err);
} else {
// If code is 1, it generally means no process is using the port
console.log(`No process found on port ${port}`);
return resolve();
}
}
// If stdout is empty, no process is using the port
const pid = stdout.trim();
if (!pid) {
console.log(`No process is currently running on port ${port}`);
return resolve();
}
// Kill the process using the specified PID
child_process.exec(`kill -9 ${pid}`.trim(), (killErr) => {
if (killErr) {
console.error(`Failed to kill process ${pid} on port ${port}`, killErr);
return reject(killErr);
}
console.log(`Successfully killed process ${pid} on port ${port}`);
resolve();
});
});
});
};
await killProcessOnPort(port);