【问题标题】:node.js processes with the same name in forever are closed when trying to close only one尝试仅关闭一个时,永远关闭具有相同名称的node.js进程
【发布时间】:2013-12-23 22:26:39
【问题描述】:

我在 aws 上部署了两个 node.js 应用,这两个应用都在显示的路径中

/home/ubuntu/nodes/app1/app.js
/home/ubuntu/nodes/app2/app.js

分别

为了在后台运行node.js应用程序,我永远启动了两个应用程序,所以喜欢

   $ sudo forever start /home/ubuntu/nodes/app1/app.js
   $ sudo forever start /home/ubuntu/nodes/app2/app.js

通过在后台进程中运行这两个 node.js 应用程序,永远运行良好。 但是,当我尝试使用这样的永久命令停止一个进程时。

   $ sudo forever stop /home/ubuntu/nodes/app1/app.js

没想到,两个 node.js 进程都被这样的信息关闭了

info:    Forever stopped process:
data:        uid  command         script forever pid   logfile                 uptime
[0] r2pZ /usr/bin/nodejs app.js 24852   24854 /root/.forever/r2pZ.log 0:0:1:14.775
[1] 9f2h /usr/bin/nodejs app.js 24870   24872 /root/.forever/9f2h.log 0:0:0:58.733

我认为这是因为两个node.js进程具有相同的名称-app.js,如何通过仅关闭一个进程来避免这种情况

【问题讨论】:

  • 同样的问题。但是还是没有人解决?
  • 显然不是 :( 也许看看不同的流程管理器?我自己喜欢pm2,尽管我不能保证它不会遇到类似(或其他)问题。

标签: node.js forever


【解决方案1】:

您只能使用forever list 命令中显示的进程索引杀死一个进程。比如你输入forever stop 1,只会杀死索引为1的进程

【讨论】:

  • 但是你无法通过forever list区分这些脚本,因为这个命令没有显示脚本的路径。
  • @Chang 您可以通过运行命令forever columns add dir 来查看脚本的路径,这将在永久列表中添加 dir 列
【解决方案2】:

您可以使用 uid(请参阅 here):

$ sudo forever --uid "app1" start app.js
$ sudo forever --uid "app2" start app.js

然后停下来:

$ sudo forever stop app1

更新
--uid 选项已弃用。 现在您可以使用--pidFile 选项。示例:

forever start --pidFile /some/path/app1.pid app.js
forever start --pidFile /some/path/app2.pid app.js

然后停止:

forever stop --pidFile /some/path/app1.pid

【讨论】:

  • 要使用 --pidFile,必须存在一个实际的 pid 文件。但什么是 pid 文件?它的内容是什么?我在网上找不到任何相关的东西,而且永远的文档也没有说明。
  • PID 文件只是一个包含进程号的文件。所以,我假设当永远“停止”一个pidFile时,它正在杀死那个进程号。当您使用 --pidFile 选项运行 forever start 时,应该永远为您创建 pid 文件
  • 我一直在测试,但没有运气。我无法理解它是如何工作的。正如你所说,我试图从 --pidFile 和现有的 pid 文件开始,但它没有做任何不同的事情。我尝试了一个不存在的 pid 文件,但是这个文件没有被创建并且永远无动于衷地运行。所以我将继续使用--uid,因为不推荐使用和工作最好什么都不做:)
猜你喜欢
  • 2014-10-16
  • 1970-01-01
  • 1970-01-01
  • 2015-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多