Nodejs killall: a npm for kill all processes
Nodejs killall: a npm for kill all processes
killall
一个用于杀死所有指定进程的 npm 包。
以前每次杀掉所有进程时,都需要执行以下命令:
ps -ef | grep pm2 | awk '{print $2}' | xargs kill -9
这看起来很繁琐。因此,我编写了一个名为 killall
的 CLI 工具,它允许你只需输入进程名即可杀死所有相关的进程。
安装
你可以通过以下命令全局安装 killall
:
sudo npm install -g killall
用法
使用方法非常简单,只需提供你要杀死的进程名即可:
killall pm2
killall node
示例代码
为了更好地理解 killall
的工作原理,我们可以看看它的核心代码。以下是一个简单的实现示例:
const { exec } = require('child_process');
function killAll(processName) {
// 使用 ps 命令查找所有与 processName 相关的进程 ID
const psCommand = `ps -ef | grep "${processName}" | grep -v "grep" | awk '{print $2}'`;
// 执行 ps 命令并获取进程 ID 列表
exec(psCommand, (error, stdout, stderr) => {
if (error) {
console.error(`Error executing ps command: ${stderr}`);
return;
}
const pids = stdout.trim().split('\n');
// 遍历进程 ID 列表并杀死每个进程
pids.forEach(pid => {
const killCommand = `kill -9 ${pid}`;
exec(killCommand, (error, stdout, stderr) => {
if (error) {
console.error(`Error killing process ${pid}: ${stderr}`);
return;
}
console.log(`Killed process ${pid}`);
});
});
});
}
// 使用示例
killAll('pm2');
解释
- 引入 child_process 模块:我们使用
child_process
模块来执行系统命令。 - 定义
killAll
函数:该函数接受一个进程名作为参数。 - 构建 ps 命令:使用
ps
命令查找与给定进程名相关的所有进程 ID,并过滤掉包含grep
的行。 - 执行 ps 命令:使用
exec
方法执行ps
命令,并获取进程 ID 列表。 - 遍历进程 ID 并杀死进程:对于每个进程 ID,构建并执行
kill
命令以杀死进程。
希望这个简单的实现能帮助你更好地理解 killall
的工作原理。如果你有任何问题或建议,请随时提出!
node写cli真心很方便,几分钟就可以搞定
赞
也可以直接调用pgrep
或者pkill
。
$ npm install -g fuck-you
我一直用这个。
killall
是一个通过 npm 安装的命令行工具,用于根据进程名来杀死所有匹配的进程。这个工具简化了使用复杂的 shell 命令来查找并杀死进程的操作。
安装
你可以通过以下命令全局安装 killall
:
sudo npm install -g killall
使用方法
安装完成后,你可以使用 killall
命令加上进程名来杀死所有的相关进程。例如:
killall pm2
killall node
这两个命令将会分别杀死所有名为 pm2
和 node
的进程。
示例代码
killall
并不是一个用于 Node.js 脚本内部使用的库,而是一个独立的 CLI 工具。因此,你不会直接在 Node.js 代码中调用它。但是,如果你希望在 Node.js 中实现类似的功能,可以参考下面的代码:
const { exec } = require('child_process');
function killProcessesByName(processName) {
exec(`pkill -f ${processName}`, (error, stdout, stderr) => {
if (error) {
console.error(`执行错误: ${stderr}`);
return;
}
console.log(`进程已杀: ${stdout}`);
});
}
// 杀死所有名为 'pm2' 的进程
killProcessesByName('pm2');
// 杀死所有名为 'node' 的进程
killProcessesByName('node');
这段代码利用 Node.js 的 child_process
模块中的 exec
函数来执行系统命令,从而达到杀死指定进程的目的。注意这里的 pkill -f
命令可以根据进程名(或部分进程名)杀死进程。