node.js sunucusunun tüm örneklerini durdur


186

Bu Node.js ile ilk kez çalışıyorum ve bu sorunla karşılaştım:

Bir IDE eklentisi aracılığıyla bir Düğüm sunucusu başlattım. Ne yazık ki, IDE'nin terminalini kullanamıyorum. Bu yüzden komut dosyasını komut satırından çalıştırmayı denedim.

Sorun bu - Express modülünü kullanıyorum ve uygulamam bazı bağlantı noktalarını dinliyor (8080). Uygulamayı komut satırından başlattığımda, bu hatayı atar:

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)

Bu hatanın ne olabileceğinden çok emin olmasam da, uygulamanın zaten kullanımda olan bir bağlantı noktasını dinlediğini varsaydım. Ben de yaptım:

netstat -an

görebiliyorum

TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING

Çünkü IDE'den başlatmaya çalıştığımda Düğüm sunucusu zaten başlatıldı.

Bu yüzden bilmek istiyorum, tüm sunucu örneklerini nasıl durdurabilirim? Ayrıca eğer bir limanda neyin çalıştığını nasıl tespit edip öldürebileceğini söyleyebilirsen


1
Üzgünüm, Windows ortamında olduğumdan bahsediyorum. Lütfen ilgili komutları gönderin. Teşekkürler
Kiran Ambati

ve ayrıca node.js görevini windows taskmanager'inizde bulabilirsiniz. Node.js olan ilerlemeyi bul: Sunucu tarafı ... ve detay bilgilerini aç, nodejs gelişiminin pid ve detaylarını bulacaksın
Xiuying Lan

Bu benim için çalıştı: superuser.com/questions/1183057/…
bilinmiyor

Yanıtlar:


422

Windows Makine:

Bir Node.js sunucusunu öldürmeniz gerekiyor ve çalışan başka bir Düğüm işleminiz yoksa, makinenize adlı tüm işlemleri öldürmesini söyleyebilirsiniz node.exe. Bu şöyle görünecektir:

taskkill /im node.exe

İşlemler hala devam ediyorsa, /fbayrağı ekleyerek işlemlerin sonlandırılmasını zorunlu kılabilirsiniz :

taskkill /f /im node.exe

Daha hassas bir kontrole ihtiyacınız varsa ve yalnızca belirli bir bağlantı noktasında çalışan bir sunucuyu öldürmeniz gerekiyorsa netstat, işlem kimliğini bulmak için kullanabilir ve daha sonra buna bir kill sinyali gönderebilirsiniz. Dolayısıyla, bağlantı noktasının olduğu durumda, 8080aşağıdakileri çalıştırabilirsiniz:

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

Çıktının beşinci sütunu işlem kimliğidir:

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

Daha sonra işlemi ile öldürebilirsiniz taskkill /pid 14828. İşlem çıkmayı reddederse /f, komuta (force) parametresini eklemeniz yeterlidir.


Linux makinesi:

Süreç neredeyse aynıdır. Ya (kullanımını makinede çalışan tüm Düğüm süreçlerini öldürebilir -$SIGNALeğer SIGKILLyetersizse):

killall node

Ya da kullanarak netstat, bir bağlantı noktasını dinleyen bir işlemin PID'sini bulabilirsiniz:

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

Bu durumda işlem kimliği, altıncı sütundaki işlem adından önceki sayıdır ve daha sonra bu killkomuta geçebilirsiniz :

$ kill 1073

İşlem çıkmayı reddederse -9, a olan SIGTERMve göz ardı edilemeyen bayrağı kullanın :

$ kill -9 1073

1
üzgünüm, Bu komutları tam olarak nasıl kullanabilirim? process.exit () kodda olabilir mi? ancak sunucu zaten başlatıldı. Büyük olasılıkla, app.js komut düğümü ile başlatılmış ancak node-dev app.js değil. Ve "düğüm killall" çalışmıyor. Yanlış mı yapıyorum? Teşekkür ederim
Kiran Ambati

1
process.exit()uygulamanız NodeJS örneğinin kapanmasına neden olur. killall nodebash içinde makinenizde çalışan tüm NodeJS örneklerini öldürür.
hekzasiyanid

teşekkürler @hexacyanide. Pencerelerde gelişiyorum. Komut satırından kullanamadığım için killall düğümü geçersiz bir komut mu yapıyor?
Kiran Ambati

3
Deneyin taskkill /IM node.exe. Adlı tüm işlemleri öldürür node.exe.
hekzasiyanid

1
Çalışması için taskkill / F / IM node.exe kullanmak zorunda kaldım, teşekkürler!
Luis

75

En hızlı yol

killall node

Linux, OS X ile çalışır


Kolay yöntem, ancak başka bir uygulama çalışıyorsa, daha spesifik olmalıyız.
Rajeev Uppala

benim için çalışmıyor. node: no process foundAyrıca, belirli bir bağlantı noktasında çalışan bir düğüm işlemleri için grep yaptığımda, işlem kimliğinin -yerine bir sayının kendisi vardır.
Giorgi Gvimradze

49

lsofGerekli bağlantı noktasına bağlı olan işlemi almak için kullanabilirsiniz .

Ne yazık ki bayraklar sisteme bağlı olarak farklı görünüyor, ancak Mac OS X'te çalıştırabilirsiniz.

lsof -Pi | grep LISTEN

Örneğin, makinemde şöyle bir şey alıyorum:

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)

İkinci sayı PID'dir ve dinledikleri port "(LISTEN)" dan önce sağdadır. Sahte PID'yi bulun ve kill -9 $PIDaşırı önyargı ile sona erdirin.


Merhaba Jacob, lütfen pencerede geliştirdiğim için yanıtı düzenleyebilir ve windows sürümünü ekleyebilirsiniz. Teşekkür ederim
Kiran Ambati

Windows üzerinde nasıl yapacağımı bilmiyorum, üzgünüm Kiran.
Jacob Groundwater

Bu, özellikle farklı bağlantı noktalarında çalışan birden fazla düğüm sunucusu olduğunda harika bir yanıttır. Her bağlantı noktasında çalışan işlem kimliğini kolayca ayırt edebilirim.
modulitos

25

Windows ve GitBash Terminali Bu komutu Windows / Webstorm / GitBash terminalinde kullanmam gerekiyordu

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

3
Bu benim için yaptı. Teşekkürler
Adim Victor

1
Bu da benim için yaptı. Windows'daki tüm düğüm işlemlerini öldürmenin en hızlı yolunu buldum.
Asad

17

belirli bir düğüm işlemini öldürmek istiyorsanız, komut satırı yoluna gidip şunu yazabilirsiniz:

ps aux | grep node

tüm düğüm işlemi kimliklerinin bir listesini almak için. şimdi işlem kimliğinizi (pid) alabilirsiniz, sonra şunları yapın:

kill -9 PID

ve tüm düğüm süreçlerini öldürmek istiyorsanız şunları yapın:

killall -9 node

-9 anahtarı pencerelerdeki son görev gibidir. bu süreci sona erdirmeye zorlar. yapabilirsin:

kill -l

tüm kill komutu anahtarlarını ve yorumlarını görmek için.


8

Bunu deneyebilirsiniz:

taskkill /IM node.exe -F

7

Linux

Arkadaşlarınızı etkilemek için

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

Ama hatırlayacağın bu

killall node


2

Windows kullanıyorsanız aşağıdakileri uygulayın:

  1. Görev yöneticisini açın, şu işlemi arayın: Düğüm işlemini gösteren görev yöneticisi - Node.js Sunucu tarafı JavaScript

  2. Sonra sağ tıklayın ve "Görevi sonlandır".

  3. İşte bu, şimdi tüm npm komutları başlangıçtan çalışıyor.


1

Çok platformlu, kararlı, en iyi çözüm:

limanınızı alan süreci öldürmek için fkill kullanın:

fkill -f :8080

Fkill'i kurmak için şu komutu kullanın: npm i -g fkill


1

deneyebilirsin

killall node

ayrıca deneyebilirsin

killall nodejs

Bu komutlar zaten birkaç kez yayınlanmıştır. Onları tekrar yayınlamak sorun değil, ama en azından cevabınıza başkalarının öğrenebileceği şekilde biraz daha açıklama eklemelisiniz
Nico Haase


0

Am Windows İşletim sistemini kullanma.

Tüm düğüm işlemini öldürdüm ve çalıştığı uygulamayı yeniden başlattım.

Deneyin

taskkill /im node.exe

0

Düğüm sunucusunu toplu iş dosyasından öldürmek ve yeniden başlatmak için aşağıdaki komutu kullanın

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


-3

Cmd veya bash tuşuna basın: Ctrl + C


Bu, yalnızca düğüm işlemi çalışırken terminal görünümünde çalışır ve işlemi öldürmeyi de garanti etmez.
Adrian
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.