Запуск нескольких npm скриптов при загрузке - PullRequest
0 голосов
/ 05 мая 2020

У меня есть сервер, на котором работает приложение express и приложение для реагирования. Мне нужно было запустить оба приложения при загрузке. Поэтому я добавил две строки в r c .local, но похоже, что работает только первая строка, а вторая - нет. Почему это так и как я могу это решить?

1 Ответ

1 голос
/ 06 мая 2020

Как и в любом другом сценарии, вторая команда будет выполнена только после завершения первой. Вероятно, это не то, что вам нужно, когда первая команда должна работать почти вечно.

Если вы хотите, чтобы вторая команда выполнялась до завершения первой, и если вы хотите, чтобы сценарий завершился раньше, чем вторая команда завершена, вы должны настроить выполнение команд в фоновом режиме.

Итак, как минимум, вместо

my-first-command
my-second-command

вы хотите:

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

Однако лучше сделать что-нибудь посложнее, чем перевод команды в фоновый режим также помещает рабочий каталог команды в root файловой системы, отключает ввод команды с консоли, доставляет стандартный вывод и стандартные потоки ошибок в службу 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, чтобы избавиться от этого сообщения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...