在启动时运行多个npm脚本

问题描述 投票:0回答:1

我有一个服务器,运行一个express应用和一个react应用。我需要在启动时同时启动这两个应用程序,所以我在rc.local上添加了两行,但似乎只有第一行运行,第二行不运行。为什么会这样,我该如何解决?

linux centos boot
1个回答
1
投票

就像其他脚本一样,第二条命令只有在第一条命令完成后才会被执行。 这可能不是你想要的,因为第一条命令应该永远运行下去。

如果你想让第二条命令在第一条命令完成之前执行,如果你想让脚本在第二条命令完成之前退出,那么你必须安排这些命令在后台运行。

所以,至少要用

my-first-command
my-second-command

你想要的。

my-first-command &
my-second-command &

但是,最好做一些更复杂的事情 除了把命令放到后台之外 还要把命令的工作目录放在文件系统的根部,把命令的输入从控制台断开 syslog 服务(通常会将该数据附加到 /var/log/syslog),并保护它不受意外信号的影响。 像。

( cd / && nohup sh -c 'my-first-command 2>&1 | logger -t my-first-command &' </dev/null >/dev/null 2>&1 )

第二条命令也是如此。

行尾的额外重定向是为了保持 nohup 发出不需要的信息信息,并创建一个未使用的。nohup.out 文件。 你可能想把最后的 2>&1 直到你确定命令的其余部分是正确的,并且按照你所希望的方式运行。 当你到了一个点上,唯一显示的信息是 nohup: redirecting stderr to stdout 然后你就可以恢复 2>&1 以摆脱该消息。

© www.soinside.com 2019 - 2024. All rights reserved.