运行 启动时有多个 npm 脚本

Running multiple npm scripts on boot

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

就像在任何其他脚本中一样,第二个命令只会在第一个命令完成后执行。当第一个命令应该永远保持 运行ning 时,这可能不是您想要的。

如果您希望第二个命令在第一个命令完成之前执行,并且如果您希望脚本在第二个命令完成之前退出,那么您必须将命令安排到后台 运行 .

所以,至少,而不是

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 以摆脱该消息。