windows 下使用 taskkill 杀死子进程, 如何找到 pid

2014-09-07 00:34:08 +08:00
 fullstack0xyz
用node-webkit写的应用,通过chlid_process .spawn执行gulp, gulp 在本地建了文件服务器和livereload服务器,如果只是kill掉这个child_process.spawn 不能终止服务器的进程,查了一下说windows下可以用系统命令 taskkill, 但是如何找到运行服务器的那个进程的pid ?
7291 次点击
所在节点    Node.js
12 条回复
lazycat
2014-09-07 01:44:03 +08:00
要是进程名确定的话可以直接taskkill /f /im example.exe
ToughGuy
2014-09-07 02:26:25 +08:00
tasklist | findstr /i process_name

手上没有windows机器... 你先测试下先吧
fullstack0xyz
2014-09-07 02:35:07 +08:00
@lazycat 进程名是 node.exe, 有好几个呢,不能误杀。。。
halfcrazy
2014-09-07 02:37:04 +08:00
tasklist可以看pid
另如果是老版本windows可以用ntsd -c q -p pid来关进程
reeco
2014-09-07 09:09:32 +08:00
任务管理器就能看了
fullstack0xyz
2014-09-07 09:41:18 +08:00
好像歪楼了,我想问在node程序里怎么杀死子进程。。
roychan
2014-09-07 09:56:06 +08:00
tasklist
hx1997
2014-09-07 12:09:09 +08:00
其实 Windows 下没有办法直接查到一个进程的子进程有哪些,因为 Windows 不注重进程间的父子关系。。。一个 workaround 是遍历所有进程,看每一个进程的父进程是否为指定进程,就能得知指定进程的子进程有哪些。

另外,如果你是想杀掉自己的程序生成的所有子进程,可以把生成的第一个子进程放入 Job 对象里,然后杀掉的话结束那个 Job 就好了。

但是系统命令应该都做不到吧。。。
fullstack0xyz
2014-09-07 15:00:50 +08:00
@hx1997 对进程这些不太了解啊,只是看了下node文档,我在博客里详细描述了问题,求助啦
fullstack0xyz
2014-09-07 15:01:54 +08:00
fullstack0xyz
2014-09-07 22:02:49 +08:00
找到一个module可以搞定这个 https://www.npmjs.org/package/tree-kill

不过还是不明白什么原理。。
fullstack0xyz
2014-09-07 22:05:21 +08:00
看看源码,欠缺底层知识。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/132147

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX