【问题标题】:Kill all process which uses specified port on Ubuntu 14.04在 Ubuntu 14.04 上杀死所有使用指定端口的进程
【发布时间】:2016-07-21 04:16:37
【问题描述】:

进程仍然存在的原因是什么?

正在运行的节点进程列表和我尝试过的内容:

root@111:/home/ubuntu# ps -e -o pid,ppid,stat,cmd  | grep node
 3150     1 Ss   sudo /usr/bin/node /home/ubuntu/chatapp/bin/www
 3152  3150 Sl   /usr/bin/node /home/ubuntu/chatapp/bin/www
 4407  1558 S+   grep --color=auto node
root@111:/home/ubuntu# kill -9 3150
root@111:/home/ubuntu# kill -9 3152
root@111:/home/ubuntu# ps -e -o pid,ppid,stat,cmd  | grep node
 4665     1 Ss   sudo /usr/bin/node /home/ubuntu/chatapp/bin/www
 4667  4665 Sl   /usr/bin/node /home/ubuntu/chatapp/bin/www
 4680  1558 S+   grep --color=auto node

【问题讨论】:

  • 你是如何开始这个过程的,通过 forever、pm2、upstart、monit 或类似的东西?
  • 我用过node app.js

标签: node.js port ubuntu-14.04 aws-ec2


【解决方案1】:

尝试:

$ sudo kill -9 18200

注意添加的标志“-9”,它强制谋杀......

来自linus signal(7) man page

...
SIGKILL       9       Term    Kill signal
...

【讨论】:

  • 结果如何?进程是不是被杀死了?你真的确定你传递给kill -9 的PID 确实存在吗?我真的很惊讶... :-(
  • 所以,你杀死的进程(31503152)已经死了。其他节点进程在杀死之后才诞生。最可能的解释是你有一个进程(例如nodemon),它会在节点进程死亡时重新生成它们......你应该停止nodemon,首先...... :-)
  • 我以前一直在使用,但卸载了它。卸载节点会杀死所有节点进程吗?
  • 不,不会。内存和文件系统是两种不同的野兽...如果您不确定系统上的守护进程,我建议您重新启动,然后,如果节点再次处于活动状态,最好寻找产生它的服务...
  • 所以您可以选择在您的实例上查找服务生成节点...
【解决方案2】:

你杀死了进程 id 18200
您的状态节点仍在运行,但那是进程 id 31261,而不是您杀死的那个...
剩余的进程(父 pid = 1)是通过杀死 18200 成为孤儿的子进程吗?

【讨论】:

  • 试过kill -9 1。节点状态仍在运行。
  • 你不能杀死进程1。那是操作系统初始化系统。在您的示例中, kill -9 31261
  • 对。那么如何释放端口呢?
猜你喜欢
  • 2012-03-09
  • 2020-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多