Node.js는 확장 가능한 고성능 네트워크 애플리케이션을 쉽게 구축할 수 있는 이벤트 기반 비동기 I/O 기반 JavaScript 실행 환경입니다. Node.js는 또한 하위 프로세스 관리 API를 제공하므로 명령줄 프로그램이나 기타 Node.js 스크립트를 쉽게 실행할 수 있습니다.
Node.js의 하위 프로세스 API를 사용하여 명령을 실행할 때 때로는 프로세스가 실행되는 동안 프로세스를 종료해야 할 수도 있습니다. 일반적으로 하위 프로세스 개체를 사용하여 외부에서 프로세스를 중지하라는 신호를 보낼 수 있지만, 이름을 기반으로 프로세스를 직접 종료하려면 어떻게 해야 할까요?
아래에서는 Node.js에서 자식 프로세스 이름을 기준으로 자식 프로세스를 죽이는 방법을 소개하겠습니다.
Node.js에서는 하위 프로세스 API를 사용하여 프로세스를 쉽게 시작하고 종료할 수 있습니다. 다음 코드가 있다고 가정합니다.
const { spawn } = require('child_process'); const child = spawn('node', ['child_process.js']); setTimeout(() => { // 杀死子进程 child.kill(); }, 5000);
위 코드는 하위 프로세스 API를 통해child_process.js
라는 Node.js 하위 프로세스를 시작하고 5초 후에child.kill( )을 전달합니다.
method는 프로세스를 중지합니다. 하위 프로세스의 객체를 얻었으므로kill()
메서드를 직접 호출하여 프로세스를 종료할 수 있습니다.child_process.js
的Node.js子进程,并在5秒后通过child.kill()
方法停止了该进程。由于我们已经获取到了该子进程的对象,因此可以直接调用kill()
方法杀死该进程。
但如果我们想要杀死一个已经在运行的进程,而不是在启动进程时获取其对象,该怎么办呢?
假设我们已经有一个名为child_process.js
的Node.js子进程在运行中,我们想要根据进程的名称(即child_process.js
)来杀死该进程,该如何做呢?
为了解决这个问题,我们需要进行如下步骤:
下面是实现这些步骤的具体方法:
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); }); } });
上述代码中,我们使用了exec()
方法来获取所有正在运行的进程。然后,我们根据进程名字node
和child_process.js
过滤出需要杀死的进程,并将它们的PID存入一个数组中。最后,我们使用process.kill()
方法杀死这些进程。
有几个需要注意的地方:
exec()
方法返回的是一个child process对象,我们需要从其stdout中获取命令输出的内容。ps axo command
来查看所有正在运行的进程。采用上述方法,我们就可以根据子进程的名称来杀死该进程了。
本文介绍了如何在Node.js中根据子进程的名称来杀死该进程。具体而言,我们需要先获取所有正在运行的进程,然后根据进程名字过滤出需要杀死的进程,并最终使用process.kill()
child_process.js
라는 Node.js 하위 프로세스가 이미 실행 중이고 프로세스를 종료하는 방법을 원한다고 가정해 보겠습니다.
exec()
메서드를 사용하여 실행 중인 모든 프로세스를 가져옵니다. 그런 다음 프로세스 이름
node
및
child_process.js
를 기반으로 종료해야 하는 프로세스를 필터링하고 해당 PID를 배열에 저장합니다. 마지막으로
process.kill()
메서드를 사용하여 이러한 프로세스를 종료합니다. 몇 가지 참고할 사항이 있습니다:
exec()
메서드는 하위 프로세스 개체를 반환하며 표준 출력에서 명령 출력 콘텐츠를 가져와야 합니다. 명령줄에서
ps axo 명령
을 실행하면 실행 중인 모든 프로세스를 볼 수 있습니다.
process.kill()
메서드를 사용하여 이러한 프로세스를 종료해야 합니다. Windows 시스템에는 Linux와 유사한 ps 명령이 없기 때문에 위의 방법이 Windows 시스템에는 적용되지 않는다는 점에 유의할 가치가 있습니다. Windows에서 이 기능을 구현해야 하는 경우 일부 타사 라이브러리를 사용하거나 운영 체제 API를 직접 호출하여 구현하는 것을 고려할 수 있습니다.
위 내용은 nodejs에서 이름을 기반으로 하위 프로세스를 종료하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!