Прервите все параллельные задания 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"
}