尝试仅关闭一个时,将关闭永远具有相同名称的node.js进程

use*_*624 13 node.js forever

我在aws上部署了两个node.js应用程序,这两个应用程序位于显示为的路径中

/home/ubuntu/nodes/app1/app.js
/home/ubuntu/nodes/app2/app.js
Run Code Online (Sandbox Code Playgroud)

分别

为了在后台运行node.js应用程序,我永远用它来启动两个应用程序,就像这样

   $ sudo forever start /home/ubuntu/nodes/app1/app.js
   $ sudo forever start /home/ubuntu/nodes/app2/app.js
Run Code Online (Sandbox Code Playgroud)

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

   $ sudo forever stop /home/ubuntu/nodes/app1/app.js
Run Code Online (Sandbox Code Playgroud)

出乎意料的是,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
Run Code Online (Sandbox Code Playgroud)

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

Vic*_*tor 42

你可以使用uid(见这里):

$ sudo forever --uid "app1" start app.js
$ sudo forever --uid "app2" start app.js
Run Code Online (Sandbox Code Playgroud)

并停止:

$ sudo forever stop app1
Run Code Online (Sandbox Code Playgroud)

更新不推荐使用
--uid选项.现在您可以使用该--pidFile选项.例:

forever start --pidFile /some/path/app1.pid app.js
forever start --pidFile /some/path/app2.pid app.js
Run Code Online (Sandbox Code Playgroud)

并停止:

forever stop --pidFile /some/path/app1.pid
Run Code Online (Sandbox Code Playgroud)


小智 3

您只能使用命令中显示的进程索引来终止一个进程forever list。例如,如果输入forever stop 1,则只有索引为 1 的进程才会被终止

  • @Chang,您可以通过运行命令“forever columns add dir”来查看脚本的路径,该命令将在永久列表中添加 dir 列 (5认同)