hentikan semua instance dari server node.js


186

Ini adalah pertama kalinya saya bekerja dengan Node.js dan saya mengalami masalah ini:

Saya sudah memulai server Node melalui plugin IDE. Sayangnya, saya tidak dapat menggunakan terminal IDE. Jadi saya mencoba menjalankan skrip dari baris perintah.

Ini masalahnya - Saya menggunakan modul Express dan aplikasi saya mendengarkan beberapa port (8080). Ketika saya memulai aplikasi dari baris perintah, itu melempar kesalahan ini:

events.js:71
    throw arguments[1]; // Unhandled 'error' event
                   ^
Error: listen EADDRINUSE
    at errnoException (net.js:770:11)
    at HTTPServer.Server._listen2 (net.js:910:14)
    at listen (net.js:937:10)
    at HTTPServer.Server.listen (net.js:986:5)
    at Object.<anonymous> (C:\xampp\htdocs\node\chat\app.js:5:5)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)

Meskipun saya tidak begitu yakin apa kesalahan ini bisa saya asumsikan bahwa itu karena aplikasi mendengarkan pada port yang sudah digunakan. Jadi saya melakukannya:

netstat -an

saya dapat melihat

TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING

Itu karena server Node sudah mulai ketika saya mencoba memulainya dari IDE.

Jadi saya ingin tahu, bagaimana saya bisa menghentikan semua contoh server? Juga jika Anda dapat memberi tahu saya cara mendeteksi apa yang berjalan pada port dan membunuhnya.


1
Maaf saya tidak menyebutkan bahwa saya ada di lingkungan windows. Silakan kirim perintah yang relevan. Terima kasih
Kiran Ambati

dan juga Anda dapat menemukan tugas node.js di taskmanager windows Anda. temukan progres yang namanya Node.js: Sisi server ... dan buka info detailnya, Anda akan menemukan pid dan detail progres nodejs Anda
Xiuying Lan

Ini yang bekerja untuk saya: superuser.com/questions/1183057/…
diketahui

Jawaban:


422

Mesin Windows:

Perlu untuk membunuh server Node.js, dan Anda tidak memiliki proses Node lainnya berjalan, Anda dapat memberitahu mesin Anda untuk membunuh semua proses yang dinamai node.exe. Itu akan terlihat seperti ini:

taskkill /im node.exe

Dan jika proses masih berlanjut, Anda dapat memaksa proses untuk mengakhiri dengan menambahkan /fbendera:

taskkill /f /im node.exe

Jika Anda membutuhkan lebih banyak kontrol berbutir halus dan hanya perlu membunuh server yang berjalan pada port tertentu, Anda dapat menggunakan netstatuntuk menemukan ID proses, kemudian mengirim sinyal kill ke sana. Jadi dalam kasus Anda, di mana port berada 8080, Anda bisa menjalankan yang berikut:

C:\>netstat -ano | find "LISTENING" | find "8080"

Kolom kelima dari output adalah ID proses:

  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       14828
  TCP    [::]:8080              [::]:0                 LISTENING       14828

Anda kemudian dapat mematikan proses dengan taskkill /pid 14828. Jika proses menolak untuk keluar, maka tambahkan saja /f(paksa) parameter ke perintah.


Mesin Linux:

Prosesnya hampir identik. Anda bisa mematikan semua proses Node yang berjalan di mesin (gunakan -$SIGNALjika SIGKILLtidak cukup):

killall node

Atau juga menggunakan netstat, Anda dapat menemukan PID dari proses mendengarkan di port:

$ netstat -nlp | grep :8080
tcp        0      0 0.0.0.0:8080         0.0.0.0:*                   LISTEN      1073/node

ID proses dalam hal ini adalah angka sebelum nama proses di kolom keenam, yang kemudian bisa Anda sampaikan ke killperintah:

$ kill 1073

Jika proses menolak untuk keluar, maka gunakan saja -9flag, yang merupakan SIGTERMdan tidak dapat diabaikan:

$ kill -9 1073

1
maaf, bagaimana tepatnya saya bisa menggunakan perintah ini? process.exit () mungkin dalam kode? tetapi server sudah dimulai. Kemungkinan dimulai dengan node.apps perintah tapi tidak app.js. Dan "node killall" tidak berfungsi. Apakah saya salah? Terima kasih
Kiran Ambati

1
process.exit()di aplikasi Anda menyebabkan instance NodeJS ditutup. killall nodedi bash akan membunuh semua instance NodeJS yang berjalan di komputer Anda.
hexacyanide

terima kasih @hexacyanide. Saya mengembangkan di windows. Apakah itu membuat killall node perintah yang tidak valid karena saya tidak dapat menggunakannya dari baris perintah.
Kiran Ambati

3
Coba taskkill /IM node.exe. Itu akan membunuh semua proses yang dinamai node.exe.
hexacyanide

1
Saya harus menggunakan taskkill / F / IM node.exe untuk membuatnya berfungsi, terima kasih!
Luis

75

Cara tercepat adalah

killall node

Bekerja dengan Linux, OS X


Metode yang mudah tetapi jika ada aplikasi lain yang berjalan maka kita harus lebih spesifik.
Rajeev Uppala

tidak bekerja untuk saya. node: no process foundJuga ketika saya grep untuk proses simpul yang berjalan pada port tertentu, ID proses -bukannya nomor itu sendiri.
Giorgi Gvimradze

49

Anda dapat menggunakan lsofget proses yang telah terikat ke port yang diperlukan.

Sayangnya flag-flag tersebut tampaknya berbeda tergantung pada sistem, tetapi pada Mac OS X Anda dapat menjalankannya

lsof -Pi | grep LISTEN

Misalnya, di komputer saya saya mendapatkan sesuatu seperti:

mongod     8662 jacob    6u  IPv4 0x17ceae4e0970fbe9      0t0  TCP localhost:27017 (LISTEN)
mongod     8662 jacob    7u  IPv4 0x17ceae4e0f9c24b1      0t0  TCP localhost:28017 (LISTEN)
memcached  8680 jacob   17u  IPv4 0x17ceae4e0971f7d1      0t0  TCP *:11211 (LISTEN)
memcached  8680 jacob   18u  IPv6 0x17ceae4e0bdf6479      0t0  TCP *:11211 (LISTEN)
mysqld     9394 jacob   10u  IPv4 0x17ceae4e080c4001      0t0  TCP *:3306 (LISTEN)
redis-ser 75429 jacob    4u  IPv4 0x17ceae4e1ba8ea59      0t0  TCP localhost:6379 (LISTEN)

Angka kedua adalah PID dan port yang mereka dengarkan ada di sebelah kanan sebelum "(DENGARKAN)". Temukan PID jahat dan kill -9 $PIDuntuk mengakhiri dengan prasangka ekstrem.


Halo Jacob, bisa Anda edit jawaban dan tambahkan versi windows karena saya sedang mengembangkan di windows. Terima kasih
Kiran Ambati

Saya tidak tahu bagaimana melakukannya di Windows, maaf Kiran.
Jacob Groundwater

Ini adalah jawaban yang bagus, terutama ketika ada beberapa server node yang berjalan pada port yang berbeda. Saya dapat dengan mudah membedakan proses ID yang berjalan di setiap port.
modulitos

25

Terminal Windows & GitBash Saya perlu menggunakan perintah ini di dalam terminal Windows / Webstorm / GitBash

cmd "/C TASKKILL /IM node.exe /F"

3
Yang ini melakukannya untuk saya. Terima kasih
Adim Victor

1
Yang ini juga melakukannya untuk saya. Saya menemukan cara tercepat untuk membunuh semua proses simpul di Windows.
Asad

16

jika Anda ingin membunuh proses simpul tertentu, Anda bisa pergi ke rute baris perintah dan ketik:

ps aux | grep node

untuk mendapatkan daftar semua id proses simpul. sekarang Anda bisa mendapatkan id proses Anda (pid), lalu lakukan:

kill -9 PID

dan jika Anda ingin membunuh semua proses simpul maka lakukan:

killall -9 node

Switch -9 seperti tugas akhir di windows. itu akan memaksa proses untuk mengakhiri. Anda dapat melakukan:

kill -l

untuk melihat semua switch perintah kill dan komentar mereka.


8

Anda dapat mencoba ini:

taskkill /IM node.exe -F

7

Linux

Untuk mengesankan teman-teman Anda

ps aux | grep -i node | awk '{print $2}' | xargs  kill -9

Tapi ini yang akan kamu ingat

killall node


2

Jika Anda menggunakan Windows, ikuti ini:

  1. Buka task manager, cari proses ini: Pengelola tugas yang menunjukkan proses Node - JavaScript sisi server Node.js

  2. Kemudian klik kanan dan "Akhiri tugas" itu.

  3. Itu saja, sekarang semua perintah npm dijalankan dari awal.


1

Multiplatform, stabil, solusi terbaik:

gunakan fkill untuk mematikan proses yang mengambil port Anda:

fkill -f :8080

Untuk menginstal fkill gunakan perintah: npm i -g fkill


1

Anda dapat mencoba

killall node

Anda juga bisa mencoba

killall nodejs

Perintah-perintah ini telah diposting beberapa kali. Tidak apa-apa untuk mempostingnya lagi, tetapi kemudian Anda setidaknya harus menambahkan beberapa penjelasan lagi untuk jawaban Anda sehingga orang lain dapat belajar darinya
Nico Haase


0

Saya Menggunakan sistem Operasi windows.

Saya membunuh semua proses simpul dan memulai kembali aplikasi yang berfungsi.

mencoba

taskkill /im node.exe

0

Gunakan perintah berikut untuk membunuh dan memulai kembali server simpul dari file batch

    @echo off
cd "D:\sam\Projects\Node"
taskkill /IM node.exe -F
start /min cmd /C "node index.js"
goto :EOF


-3

Tekan dalam cmd atau bash: Ctrl + C


Ini hanya berfungsi dalam tampilan terminal dengan proses simpul berjalan, dan tidak menjamin untuk mematikan proses juga.
Desain oleh Adrian
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.