Home > Article > Web Front-end > How to kill the child process based on its name in nodejs
Node.js is a JavaScript running environment based on event-driven, asynchronous I/O, which can easily build high-performance, scalable network applications. Node.js also provides a subprocess management API, making it easy to execute command line programs or other Node.js scripts.
When we use the subprocess API of Node.js to execute a command, sometimes we may need to kill the process while it is running. Normally, we can use the child process object to send a signal from outside to stop the process, but what if we want to kill the process directly based on its name?
Below, I will introduce how to kill the child process based on its name in Node.js.
In Node.js, the subprocess API can be used to easily start and kill processes. Suppose we have the following code:
const { spawn } = require('child_process'); const child = spawn('node', ['child_process.js']); setTimeout(() => { // 杀死子进程 child.kill(); }, 5000);
The above code starts a Node.js child process named child_process.js
through the child process API, and passes child after 5 seconds The .kill()
method stops the process. Since we have obtained the object of the subprocess, we can directly call the kill()
method to kill the process.
But what if we want to kill an already running process instead of getting its object when starting the process?
Assume that we already have a Node.js child process named child_process.js
running, and we want to sort it based on the name of the process (i.e. child_process.js
) to kill the process, what should I do?
In order to solve this problem, we need to perform the following steps:
The following is the specific method to implement these steps:
const { exec } = require('child_process'); // 获取所有正在运行的进程 exec('ps axo command', (err, stdout) => { if (err) { console.error(err); return; } // 根据进程名字过滤出我们需要杀死的进程 const processList = stdout.split(' ') .filter(line => line.includes('node')) .filter(line => line.includes('child_process.js')) .map(line => line.trim()) .map(line => /(d+)/.exec(line)) .map(match => match[1]); // 杀死该进程 if (processList.length > 0) { processList.forEach(pid => { process.kill(pid); }); } });
The above code , we used the exec()
method to get all running processes. Then, we filter out the processes that need to be killed based on the process names node
and child_process.js
, and store their PIDs in an array. Finally, we kill these processes using the process.kill()
method.
There are several things to note:
#exec()
The method returns a child process object, and we need to get the command output from its stdout Content. ps axo command
on the command line. Using the above method, we can kill the child process based on its name.
This article explains how to kill a child process based on its name in Node.js. Specifically, we need to first obtain all running processes, then filter out the processes that need to be killed based on the process name, and finally use the process.kill()
method to kill these processes.
It is worth noting that the above method does not apply to Windows systems because this system does not have a ps command similar to Linux. If you need to implement this function under Windows, you can consider using some third-party libraries or directly calling the operating system API to implement it.
The above is the detailed content of How to kill the child process based on its name in nodejs. For more information, please follow other related articles on the PHP Chinese website!