Прервите все параллельные задания lerna

У меня есть сценарий Лерна (lerna dev), который загружает несколько серверов разработчиков пакета с --parallel опция (если бы я не использовал эту опцию, запускался только первый сервис, но не другие). Эти серверы обслуживают свои соответствующие приложения в режиме разработки на разных портах с горячей перезагрузкой. По сути, это обеспечивает плавную разработку, поскольку нам нужно всего лишь ввести одну команду, чтобы начать работу с несколькими пакетами.

Проблема, которую я заметил, состоит в том, что, когда я прерываю эту задачу lerna, серверы не выключаются. Когда я бегу lerna dev Команда выводит сообщения, объясняющие, что серверы уже работают на используемых ими портах. Что это значит, когда я выключаю lerna dev команда (с CTRL+C), она не убивает все запущенные процессы (некоторые убиты, некоторые нет).

Интересно, что те, которые не закрываются create-react-app projects,

Итак, вот мой вопрос: как мне убедиться, что процессы начались через lerna run команда с --parallel вариант все убиты вместе с основным процессом?

PS: это происходит в системах Unix, мы не используем Windows.

1 ответ

Решение

Я хотел бы предложить, чтобы вы не использовали Ctrl+C для этого. Взгляните на уничтожение процесса через pid (идентификатор процесса), используя kill или же pkill -f,

Во-первых, посмотрите, какие процессы запущены. Я думаю, что ps aux | grep lerna там должно отображаться то, что вы хотите (при необходимости настройте grep). Вы можете увидеть основной процесс (я использую Nginx, я никогда не использовал lerna), если так, возьмите PID и введите kill PID где PID - это ваш главный PID. Если это не убивает все процессы, используйте pkill -f lerna убить все процессы, которые соответствуют критерию поиска lerna (при необходимости снова настроить).

Для получения дополнительной информации о том, как убить процессы, основанные на поисковом запросе, смотрите Как убить все процессы, соответствующие имени

Вы можете использовать kill-port для уничтожения всех процессов одновременно в сценарии NPM.

Вы также можете добавить скрипт, который убивает порты и запускает lerna dev чтобы убедиться, что порты закрыты, и вы не получите ошибок при запуске серверов.

"scripts": {
  "kill-ports": "kill-port --port 4444,5555,3000",
  "dev": "npm run kill-ports && lerna run dev --parallel"
}
Другие вопросы по тегам