linux - 在启动时运行多个 npm 脚本
问题描述
我有一个运行快速应用程序和反应应用程序的服务器。我需要在启动时启动这两个应用程序。所以我在 rc.local 上添加了两行,但似乎只有第一行运行,第二行没有。为什么会这样,我该如何解决?
解决方案
就像在任何其他脚本中一样,第二个命令只会在第一个命令完成后执行。当第一个命令应该永远运行时,这可能不是您想要的。
如果您希望第二个命令在第一个命令完成之前执行,并且如果您希望脚本在第二个命令完成之前退出,那么您必须安排这些命令在后台运行。
所以,至少,而不是
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
以摆脱该消息。
推荐阅读
- r - 一个代码块中有多个小标题。在 r markdown 中编织后如何显示它们?每次我只显示最后一个小标题
- javascript - 如何从到一个特定的表格里面?
- c++ - 为什么指针对象不会被自己删除,因为其他对象在 C++ 程序结束时被删除?
- python - 如何在 python numpy 的二维数组中将位置(第 2、第 3 或第 4 等)转换为索引(第 1 位置为 00,第 2 为 01 等)?
- git-clone - 克隆图中的“克隆”是主还是起源?
- java - 测试时没有可用于 direct-vm 类型路由的骆驼消费者
- swift - 将 JSON 保存到领域
- python - 如何暂时断开 PyQt5 信号并在之后重新连接?
- html - 为什么输入的宽度错误?
- asp.net-mvc - 将所有对子页面的请求路由到父页面(Episerver ASP.NET MVC)