あなたの説明によると、プロセスツリー全体を停止する必要があります。ソリューションは、コードが実行されているプラットフォームによって異なります。 Windowsでは、taskkill
コマンドを実行してlinux/macosでそれらを終了させることができます.npmからtree-killパッケージを利用できます。そしてまず第一に、プロセスのPIDを取得する必要があります。ここでは、以下の参照のための実装です:あなたは24/7実行中のプロセスのPID(あなたのボットの親プロセス)を渡すときには、すべてのボットのプロセスツリーを殺すためにこの機能を使用することができます
const procTreeKill = require('tree-kill')
const cp = require('child_process')
const onMacOS =() => {
return process.platform === 'darwin'
}
const onLinux =() => {
return process.platform === 'linux'
}
const onWindows =() => {
return process.platform === 'win32'
}
function kill(pid) {
return new Promise(function (resolve, reject) {
if (onWindows()) {
try {
const options = {
stdio: [
'pipe',
'pipe',
'ignore',
]
}
cp.execFile(
'taskkill',
['/T', '/F', '/PID', pid.toString()],
options,
(error, stdout, stderr) => {
if (error) {
return reject(error)
}
return resolve(true)
}
)
} catch (error) {
return reject(error)
}
} else if (onLinux() || onMacOS()) {
try {
procTreeKill(pid, 'SIGKILL', function (error) {
if (error) {
return reject(error)
}
return resolve(true)
})
} catch (error) {
return reject(error)
}
} else {
return reject(new Error('Platform unsupported.'))
}
})
}
は、かそのPIDが渡されたワーカープロセスを殺すことができます。