Как остановить npm?
Я запускаю сайт на node.js на vds хостинге с помощью npm start server.js . Все работает, консоль выводит логи, другие могут заходить по ip. Если нужно перезапустить node, приходится перезагружать весь сервер и заново запускать node. У себя на компе (на windows) я просто закрывал консоль. Как реализовать остановку и рестарт node из консоли для хостинга?
Отслеживать
11.9k 5 5 золотых знаков 28 28 серебряных знаков 40 40 бронзовых знаков
задан 17 янв 2018 в 12:59
Данис Хамидуллин Данис Хамидуллин
67 1 1 золотой знак 2 2 серебряных знака 7 7 бронзовых знаков
Ну, если вы орудуете через putty, то проще всего поставить утилиту screen и работать в ней. По моему чтобы завершить процесс, нужно всего лишь выполнить команду ctrl+c.
17 янв 2018 в 13:03
Возможный дубликат вопроса: Как сделать, чтобы nodeJs сервер работал без активированной консоли?
17 янв 2018 в 15:00
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Используй сочетание кнопок CTRL + C чтобы остановить. И научись пользоваться screen, я скинул тебе мануал как работать с ним в CentOS, но для других ОС тоже есть и использование аналогично, установка немного различна, но суть почти одна и та же.
Создай файл run.sh и запускай через него, будет в будущем удобно, особенно когда нормально разберешься.
#Путь до проекта cd /www/test.com/ #Запуск проекта, Test - название процесса screen -S Test npm run start
Скрипт можешь добавить в автозагрузку, тогда сервер будет стартовать сразу же после включения
В packege.json укажи
"scripts": < "start": "node start server.js" >,
Если ты во время разработки постоянно перезапускаешь сервер, то можешь воспользоваться nodemon, он следит за файлами и если, что-то изменилось, то перезапускается
как остановить сервер node.js
из замазочного терминала, чтобы запустить его. Теперь я хочу остановить сервер, как мне это сделать? Я попытался нажать кнопку паузы на клавиатуре. Но это не останавливает это.
Попробуйте использовать ctrl+c , как правило, делает свое дело.
программно, вы можете использовать, app.close() если var app = require(‘http’).createServer() .
Попробуй из другого терминала
Работает в OS X и Linux
Единственное, что сработало.
Если вы собираетесь использовать команду top для уничтожения процесса, попробуйте сначала отправить сигнал «2», а не «9». Отправка «9» — это что-то вроде того, чтобы вытащить штекер из вашего компьютера вместо того, чтобы выдавать команду выключения. Иногда это может иметь некоторые нежелательные последствия. Отправка «2» имеет тот же эффект, что и ctrl+c .
Для справки, вот различные сигналы, которые вы можете отправить, чтобы остановить процесс, и что они означают: (со страницы man kill)
1 HUP (hang up) 2 INT (interrupt) 3 QUIT (quit) 6 ABRT (abort) 9 KILL (non-catchable, non-ignorable kill) 14 ALRM (alarm clock) 15 TERM (software termination signal)
Введите ‘top’ в командной строке и найдите идентификатор процесса, который вы хотите уничтожить. Нажмите «K», он предложит вам ввести идентификатор процесса, который вы хотите убить, введите его и нажмите ввод. Затем он спросит, какой сигнал вы хотите передать процессу, введите «9» и нажмите ввод. Процесс будет убит.
На окнах ОС в командной строке нажмите CTRL + C и дождитесь остановки, если это не произойдет, затем нажмите CTRL + C 2 раза, это точно сработает.
Ctrl + Shift + C делает трюк в терминале Ubuntu
Терминал не должен переназначать ключи как это.
У меня была та же проблема при запуске npm из Babun, а затем я попытался использовать Windows CMD (потому что у меня была похожая проблема при запуске команд git из Babun), и это показало разные результаты.
Когда я запускаю npm из CMD, мне нужно было нажать Enter, чтобы скрипт был выполнен, а затем меня попросили нажать w, чтобы показать больше деталей.
Я нажал w и это показало:
Отслеживание использования
›Нажмите f, чтобы запустить только неудачные тесты.
›Нажмите o, чтобы запустить только тесты, связанные с измененными файлами.
›Нажмите p, чтобы отфильтровать по шаблону регулярного выражения имени файла.
›Нажмите t для фильтрации по шаблону регулярного выражения имени теста.
›Нажмите q, чтобы выйти из режима просмотра.
›Нажмите Enter, чтобы запустить тестовый прогон.
Я нажал w и npm был остановлен и вернул управление в CMD.
как остановить сервер node js
Чтобы остановить сервер Node.js, необходимо нажать «Ctrl + C» в терминале, в котором запущен сервер. Ниже приведен пример:
[process был прерван]
Видим, что в терминале появилось сообщение, процесс был прерван. Теперь сервер Node.js остановлен и не будет прослушивать соединения.
Также, есть возможность удаленного управления процессами на Node.js. Одним из таких решений является pm2 process manager.
Как остановить сервер node js в терминале
Я впервые работаю с Node.js и столкнулся с этой проблемой:
Я запустил Node-сервер через плагин IDE. К сожалению, я не могу использовать терминал IDE. Поэтому я попытался запустить скрипт из командной строки.
Это проблема — я использую модуль Express, и мое приложение прослушивает какой-то порт (8080). Когда я запускаю приложение из командной строки, оно выдает эту ошибку:
Хотя я не совсем уверен, что это за ошибка, я предположил, что это потому, что приложение прослушивает порт, который уже используется. Так я и сделал:
Это потому, что Node-сервер уже запущен, когда я пытался запустить его из IDE.
Итак, я хочу знать, как я могу остановить все экземпляры сервера? Также, если вы можете сказать мне, как определить, что работает на порту и убить его.
14 ответов
Windows Machine:
Вам нужно убить сервер Node.js, и у вас не запущены никакие другие процессы Node, вы можете сказать своей машине, чтобы она убила все процессы с именем node.exe . Это будет выглядеть так:
И если процессы все еще продолжаются, вы можете принудительно завершить процессы, добавив флаг /f :
Если вам нужен более детальный контроль и вам нужно только уничтожить сервер, работающий на определенном порту, вы можете использовать netstat , чтобы найти идентификатор процесса, а затем отправить ему сигнал уничтожения. Так что в вашем случае, где порт 8080 , вы можете запустить следующее:
Пятый столбец вывода — это идентификатор процесса:
Затем вы можете убить процесс с помощью taskkill /pid 14828 . Если процесс отказывается выйти, просто добавьте в команду параметр /f (force).
Linux-машина:
Процесс практически идентичен. Вы можете уничтожить все процессы Node, запущенные на компьютере (используйте -$SIGNAL , если SIGKILL недостаточно):
Или также с помощью netstat вы можете найти PID процесса, прослушивающего порт:
Идентификатор процесса в этом случае — это номер перед именем процесса в шестом столбце, который можно затем передать команде kill :
Если процесс отказывается выходить, просто используйте флаг -9 , который является SIGTERM и не может быть проигнорирован:
Многоплатформенное, стабильное, лучшее решение:
Используйте fkill , чтобы убить процесс, который захватывает ваш порт:
Чтобы установить fkill, используйте команду: npm i -g fkill
Если вы хотите убить определенный процесс узла, вы можете перейти к маршруту командной строки и набрать:
Чтобы получить список всех идентификаторов процессов узла. Теперь вы можете получить идентификатор процесса (pid), а затем выполнить:
И если вы хотите уничтожить все процессы узла, выполните:
-9 переключатель как конечная задача на окнах. это заставит процесс закончиться. ты можешь сделать:
Как остановить сервер node js в терминале
как остановить сервер node.js
Как остановить сервер Node.js?
Остановить node.js программу из командной строки
Альтернативно вы можете убить его вручную следующим образом:
- Ввод .exit в nodejs REPL.
- Дважды нажмите -C .
- нажатие -D .
- process.exit(0) означает естественный выход из REPL. Если вы хотите вернуть какой-либо другой статус, вы можете вернуть ненулевой номер.
- process.kill(process.pid) — это способ убить using nodejs api из вашего кода или из REPL.
Установить Forever
npm install forever -g
forever start -al ./logs/forever.log -ao ./logs/out.log -ae ./logs/err.log server.js
info: Forever processing file: server.js
forever stop server.js
info: Forever stopped process: uid command script forever pid id logfile uptime [0] sBSj «/usr/bin/nodejs/node»
Остановить программу node.js из командной строки
У меня есть простой TCP-сервер, который прослушивает порт.
Я начинаю с него, node server.js а затем закрываю с помощью Ctrl + Z на Mac. Когда я пытаюсь запустить его снова, node server.js я получаю следующее сообщение об ошибке:
Я неправильно закрываю программу? Как я могу этого избежать?
Чтобы завершить программу, вы должны использовать Ctrl + C . Если вы это сделаете, он отправит SIGINT , что позволяет программе корректно завершить работу, отключив все порты, которые она прослушивает.
Ctrl + Z приостанавливает его, что означает, что он все еще может работать.
Ctrl + C фактически убьет его.
вы также можете убить его вручную следующим образом:
Найдите идентификатор процесса (второй слева):
Это также может сработать
Или, как вариант, вы можете сделать все это в одной строке:
Вы можете заменить узел внутри ‘\ snode \ s’ любым другим именем процесса.
Возобновить и прервать процесс:
Вы, вероятно, сейчас находитесь в командной строке терминала .
Дайте команду fg возобновить процесс на переднем плане.
введите Ctrl +, C чтобы правильно убить его.
В качестве альтернативы вы можете убить его вручную следующим образом:
( ПРИМЕЧАНИЕ: для следующих команд может потребоваться root, sudo . ваш друг — тоже)
или, если у вас нет pkill, это может сработать:
или, возможно, это:
иногда процесс будет указывать свой собственный grep, и в этом случае вам понадобится:
h / t @ruffin из комментариев к самому вопросу. У меня была такая же проблема, и его комментарий помог мне решить ее самостоятельно.

вы можете ввести, .exit чтобы выйти из узла js REPL
Если вы запускаете Node.js в интерактивном режиме (REPL):
Ctrl + C вернет вас к приглашению>, затем введите:
или просто используйте Ctrl + D .

$ sudo killall node в другом терминале работает на mac , пока killall node не работает:
на linux попробуйте: pkill node
Вы можете использовать термоэлемент, чтобы добиться желаемого.
Чтобы получить идентификаторы процессов для задач, запущенных на порту, вы можете:
Допустим, это порт 8888, команда выглядит так:
А чтобы убить процесс, запущенный на порту, просто добавьте ключ -k.
Пример (порт 8888):
Вот и все! Это закроет процесс прослушивания порта. Обычно я делаю это перед запуском серверного приложения.

Хотя это поздний ответ, я нашел его в документах NodeJS :
The ‘exit’ event is emitted when the REPL is exited either by receiving the .exit command as input, the user pressing -C twice to signal SIGINT, or by pressing -D to signal ‘end’ on the input stream. The listener callback is invoked without any arguments.
Итак, чтобы подвести итог, вы можете выйти:
- Ввод .exit в nodejs REPL.
- Двойное нажатие -C .
- прессинг -D .
- process.exit(0) означает естественный выход из REPL. Если вы хотите вернуть любой другой статус, вы можете вернуть ненулевое число.
- process.kill(process.pid) — это способ убить с помощью nodejs api из вашего кода или из REPL.
вы можете использовать следующую команду, чтобы быть конкретной в localserver kill (здесь: 8000)
Это даст вам следующие группы TCP:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 21521 ubuntu 12u IPv6 345668 0t0 TCP *:8000 (LISTEN)
Он убьет processId, соответствующий TCP *: 8000
Если вы хотите остановить свой сервер с помощью npm stop файла. Вы можете написать код, убивающий ваш серверный процесс, как:
Я добавляю этот ответ, потому что для многих проектов с производственным развертыванием у нас есть сценарии, останавливающие эти процессы, поэтому нам не нужно этого делать.
Чистый способ управления процессами вашего Node Server — использование forever пакета (from NPM ).
Пример:
Установить навсегда
npm install forever -g
Запустить сервер узла
forever start -al ./logs/forever.log -ao ./logs/out.log -ae ./logs/err.log server.js
Результат:
info: Forever processing file: server.js
Завершение работы сервера узла
forever stop server.js
Результат
info: Forever stopped process: uid command script forever pid id logfile uptime [0] sBSj «/usr/bin/nodejs/node»
/path/to/your/project/server.js 23084 13176
Это полностью завершит работу вашего серверного приложения.

-
Открытый терминал
Запустите приведенный ниже код и нажмите Enter.

Я столкнулся с проблемой, когда у меня работает несколько серверов узлов , и я хочу просто убить один из них и повторно развернуть его из сценария.
Примечание. Этот пример находится в оболочке bash на Mac.
Для этого я стараюсь сделать свой node звонок как можно более конкретным. Например, вместо того, чтобы звонить node server.js из каталога приложений, я звоню node app_name_1/app/server.js
Тогда я могу убить его, используя:
kill -9 $(ps aux | grep ‘node\ app_name_1/app/server.js’ | awk ‘
Это убьет только процесс узла, на котором выполняется app_name_1 / app / server.js.
Если вы запустили node app_name_2/app/server.js этот узел, процесс продолжится.
Если вы решите, что хотите убить их, вы можете использовать все, killall node как упоминали другие.
Создание и запуск HTTP-сервера на Node.js. «Hello, World!» на Node.js
В предыдущем уроке мы установили Node.js на Ubuntu. Когда Node.js установлена, самое время написать первое приложение и тестировать систему. В этом уроке мы создадим простой веб-сервер (HTTP-сервер) на Node.js и подробно рассмотрим каждую строку кода. Наш веб-сервер будет вывести приветственное сообщение.
Итак, давайте создадим наш первый файл (start.js) с таким содержанием:
Приложения нужно запустить с терминала если у Вас операционная система Unix/Linux или с командной строки (cmd) если у Вас Windows. Нужно открыть терминал, перейти ту папку, где Вы сохранили файл start.js и набрать в терминале следующую команду:
После этого программа будет запущена и в терминале будет выведена следующая строка: Server running on 8080.

Теперь наш сервер запущен и мы можем обратиться к ней с помощью любого браузера. Сейчас нам нужно открыть браузер и перейти по следующему адресу — http://localhost:8080/. После этого в браузере мы увидим страницу с текстом Hello, World!.

Чтобы прекратить работу веб-сервера, нужно в терминале нажать на комбинацию клавиш Ctrl+C. Если Вы внесли в коде изменение, то нужно остановить и запустить http-сервер, чтобы изменение учитывались.
HTTP-сервер с нуля — объяснение
А теперь давайте подробно рассмотрим ваш код начиная с первой строки.
Первая строка — это директива ‘use strict’. Node.js поддерживает современный стандарт ECMAScript 6 (ES6 или JavaScript 2015) и мы уже в коде использовали новые возможности ECMAScript 6. Также мы в дальнейшем будем использовать новые возможности нового стандарта. Директива ‘use strict’ переводит код в режим полного соответствия современному стандарту. Без этого наш код не будет работать.
Следующая строка кода выглядит так:
Здесь мы загружаем HTTP модуль и присваиваем его http переменной. С помощью HTTP модуля мы можем работать с HTTP протоколом — отправить и принять HTTP запросы.
Практически весь функционал Node.js находится в отдельных модулях (библиотеки). Есть модули, которые уже встроены в ядро Node.js (например, модуль fs — для работы с файловой системой, модуль http, tcp и другие) и есть модули которые можно отдельно установить (например, модуль mongodb — драйвер для работы с базой данных MongoDB). Также мы в дальнейшем создаем свои модули.
Функция require() загружает модули. С помощью функции require() можно загружать любой модуль и мы его в дальнейшем неоднократно будем использовать.
С помощью конструкции const мы объявляем переменную (константа). Конструкция const появилось в новом версии ECMAScript-а — ECMAScript 6.
Следующая строка кода выглядит так:
У объекта http есть метод createServer(). С помощью этого метода создается новый сервер. createServer() метод в качестве аргумента получает безымянную функцию. Данная функция является функцией requestListener (приемником запроса) и он принимает два параметра:
- Request (http.ServerRequest) — запрос от клиента к серверу (серверный запрос).
- Response (http.ServerResponse) — серверный ответ.
Следующая строка находится в безымянной функции:
У объекта response есть несколько методов и один из них это метод writeHead(). С помощью этого метода клиенту можно отправлять заголовки ответа (HTTP заголовки) и статус код. В нашем случае мы отправляем статус код 200 и тип контента — HTML. Можно отправлять другие заголовочные информации клиенту кроме типа контента. Например длину контента — content-length.
Следующая строка кода — это еще один метод объекта response.
Метод end() посылает сигнал о завершении передачи данных, то есть о том, что все заголовки и тело ответа были отправлены. Вам нужно всегда использовать метод end() при отправке данных клиенту. Этот метод имеет две необязательные параметры:
- Первый параметр метода это данные (текст или буфер).
- Второй параметр — это кодировка текста, если первый параметр был текстом
В нашем случае мы отправляем сигнал о том, что все данные переданы, но кроме сигнала отправляем текст, который клиент принимает как отправляется клиенту как тело HTTP сообщения (body).
Мы так же текст можем отправлять другим методом. У объекта response есть метод write(), с помощью которого можно отправлять любой текст клиенту.
После метода createServer() идет еще один метод listen(), который прослушивает входящие подключения к заданному порту.
В нашем случае наш сервер слушает порт 8080. Метод listen() является асинхронным методом. При обращение к серверу приложение не блокирует выполнение кода в ожидание подключение к порту. Обрабатывается остальная часть кода, который идет за методом listen(). А после подключения к порту автоматически активируется функция обратного вызова.
Похожие публикации:
- Как перевернуть изображение css
- Как перекрасить svg в css
- Что такое css класс
- Что такое html и css простыми словами
