繁体   English   中英

在 shell 脚本中运行两个节点进程

[英]Running two node processes inside a shell script

我是 shell 脚本的初学者。

我有一个 node js 程序和一个使用 mongoDB 的 API。 所以 API 使用 express 并链接到我的路由和模式 - 为了启动 API 服务器,我所要做的就是运行node app.js

但是,我也有我的主程序,它轮询用户通过数据库添加的特定url,然后将轮询请求返回的数据保存在数据库中。 这种情况每“x”秒发生一次,因此我总是在轮询发生时打开 mongo 连接,并在完成后立即关闭它。 所以为了运行这个程序,我需要运行node main.js

当程序运行时, app.js似乎只打开一次 mongo 连接。

所以我的问题是 - 我可以通过编写 bash 脚本以某种方式将它们链接在一起,以便我可以一起启动两个进程并在需要时结束它们吗?

我尝试这样做:

#!/usr/bin/bash
# declare STRING variable
STRING="Starting node processes"
#print variable on a screen
echo $STRING

node misrepo/app.js
node misrepo/main.js

但是,这只会启动app.js ,并不会运行我的main.js应用程序。

任何帮助将不胜感激,因为我只是想从谷歌的帮助中解决这个问题!

马库斯的好回答,

尽管如此,我需要添加一点评论,由于缺乏声誉,我需要创建一个答案。

最好在后台启动两个进程(由 & 引起)并等待两个进程完成。 否则,似乎两个进程都已完成,而您只等待第二个命令。 这可能会导致处理这两个命令的输出时出现问题。

#!/usr/bin/bash
# declare STRING variable
STRING="Starting node processes"
#print variable on a screen
echo $STRING

node misrepo/app.js&
node misrepo/main.js&

# wait until both background processes finish
wait

最好的,弗兰克

服务管理很棘手,有专门为它构建的工具。 最好不要在 bash 中重新发明轮子。

使用永远pm2来管理服务。

npm install forever -g
forever start misrepo/app.js

将它们放入您的脚本中

#!/bin/sh
forever start misrepo/app.js
forever start misrepo/main.js

您还可以在package.json脚本部分包含这些命令(或您的脚本)

{
  "scripts": {
    "start": "forever start misrepo/app.js && forever start misrepo/main.js"
  }
}

然后npm start将启动您的应用程序。 stoprestart也是标准配置。

如果您在服务器上执行此操作,则使用本机服务管理器来管理每个服务。 如果您使用的是 linux,这很可能是systemd

要并行启动两个程序,您可以执行以下操作:

#!/usr/bin/bash
# declare STRING variable
STRING="Starting node processes"
#print variable on a screen
echo $STRING

node misrepo/app.js & node misrepo/main.js

这将使用misrepo/app.js启动节点,并立即使用misrepo/main.js启动另一个节点实例。 在您的示例中,脚本会阻塞,直到node misrepo/app.js完成执行,然后才启动node misrepo/main.js

这可能为时已晚,但希望这会帮助正在寻找答案的人。

#!/bin/bash

//进入第一个文件夹

cd /var/www/html/demo/

//检查文件(如果不需要删除ls

ls //这将启动第一个节点进程,然后进入下一个目录

节点 app.js & cd /var/www/html/demo1

// 确保前一行的 cd 命令

ls

//启动第二个节点服务器

节点 server.js ;

//执行bin文件

执行重击

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM