我在package.json
上定义了debug
脚本。此脚本将启动node
应用。
整个npm
脚本正在通过测试启动,最后一个脚本必须在测试结束后终止debug
脚本。
所以当我spawn
npm run debug
并且我杀了它时,node
进程就不会被杀死。
我尝试使用child_process.kill
杀死整个过程并生成kill
bash命令而没有运气,因为pid
并不属于{ {1}}使用node
启动。
如何杀死我不拥有npm run debug
的{{1}}进程?
答案 0 :(得分:0)
您不必拥有PID就能杀死它(只要运行脚本的用户有权这样做)。
您可以生成命令并像在命令行中那样执行它(其中有多种方法)。还有像find-process
这样的软件包,您可以使用这些软件包来查找该过程。
更简单的方法是在debug
启动时编写一些包含pid的文件(如果可以的话)。然后你可以重新读取该文件以获得PID。
// in debug
import { writeFile } from 'fs';
writeFile('debug.pid', process.pid, 'utf8', err => err && console.log('Error writing pid file'));
// in app where it'll kill
import { readFile } from 'fs';
let debugPid;
readFile('debug.pid', 'utf8', (err, data) => err ? console.log('Error reading pid file') : debugPid = data);
无论采用何种方法,一旦获得PID,请使用process.kill()
将其删除:
process.kill(pid);