Перейти к содержимому

Как остановить сервер node js в терминале

  • автор:

Как остановить 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.

Итак, чтобы подвести итог, вы можете выйти:

  1. Ввод .exit в nodejs REPL.
  2. Двойное нажатие -C .
  3. прессинг -D .
  4. process.exit(0) означает естественный выход из REPL. Если вы хотите вернуть любой другой статус, вы можете вернуть ненулевое число.
  5. 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-сервера на Node.js

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

Запуск веб-сервера на Node.js

Чтобы прекратить работу веб-сервера, нужно в терминале нажать на комбинацию клавиш 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(). А после подключения к порту автоматически активируется функция обратного вызова.

Похожие публикации:

  1. Как перевернуть изображение css
  2. Как перекрасить svg в css
  3. Что такое css класс
  4. Что такое html и css простыми словами

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *