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()
メソッドはプロセスを停止します。サブプロセスのオブジェクトを取得したので、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() メソッドを使用してこれらのプロセスを強制終了します。
メソッドは子プロセス オブジェクトを返すので、そのオブジェクトからコマンド出力を取得する必要があります。標準出力の内容。
を実行すると、実行中のすべてのプロセスを表示できます。
process.kill() メソッドを使用してこれらのプロセスを強制終了する必要があります。
以上がNodejsの名前に基づいて子プロセスを強制終了する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。