2012-06-30 12 views
13

मैं शानदार पर Node.js के लिए एक बिल्ड-सिस्टम स्थापित करने की कोशिश कर रहा हूं, इसलिए मैं ओपन की गई फ़ाइल पर "नोड" को कॉल करने के लिए F7 दबा सकता हूं। समस्या यह है कि प्रक्रिया हमेशा के लिए खुली होती है, इसलिए, दूसरी बार जब मैं F7 का उपयोग करता हूं तो मुझे एक ऐड-इन-उपयोग मिलता है।node.js पर खुली प्रक्रिया को कैसे मारें?

क्या कोई तरीका है कि मैं node.js से खुले "node.exe" प्रक्रिया को मार सकता हूं?

+0

संभावित डुप्लिकेट [नोड.जेएस सर्वर के सभी उदाहरणों को रोकें] (http://stackoverflow.com/questions/14790910/stop-all-instances-of-node-js-server) – rofrol

उत्तर

29

प्रक्रिया किसी दिए गए बंदरगाह पर चल रहा है और कमांड लाइन

sudo fuser -v 5000/tcp // gives you the process running on port 5000 

यह एक करने के लिए इसी तरह के उत्पादन विवरण

     USER  PID ACCESS COMMAND 
    5000/tcp:   almypal  20834 F.... node 
नीचे दिखाया गया होगा से यह termiate को पहचान करने के लिए आदेशों के निम्नलिखित सेट का उपयोग करें

फिर

sudo fuser -vk 5000/tcp 

प्रक्रिया को समाप्त करने के लिए उपयोग करें।

sudo fuser -v 5000/tcp 

का उपयोग करके प्रक्रिया को समाप्त करने के लिए एक बार फिर से जांचें।

विंडोज़ पर आप निम्न चरणों

C:\> tasklist // will show the list of running process' 

    Image Name  PID Session Name Session# Mem Usage 
    System   4 console     0 236 K 
    ... 
    node.exe   3592 console    0 8440 k 

नोट पीआईडी ​​अपने नोड प्रक्रिया के लिए इसी 3592. अगला रन taskkill इस्तेमाल कर सकते हैं, इस मामले में प्रक्रिया समाप्त करने के लिए।

C:\> taskkill /F /PID 3592 

या/आईएम

C:\> taskkill /F /IM node.exe 
+2

शानदार उत्तर लेकिन ... और विंडोज के लिए? – MaiaVictor

+0

ने विंडोज के लिए विवरण के साथ उत्तर अद्यतन किया है। – almypal

+0

अच्छी तरह से मैंने जो कुछ भी मांगा था, उसे ठीक नहीं देखा लेकिन आदेशों को node.js से उपयोग किया जा सकता है और यदि आप उन्हें थोड़ा (प्रक्रिया आईडी से proccess नाम) में बदलते हैं तो यह मैंने किया है, इसलिए यह सबसे अच्छा जवाब है । – MaiaVictor

2

स्विच Node.js भीतर से:

var die = function(quitMsg) 
{ 
    console.error(quitMsg) 
    process.exit(1); 
} 

die('Process quit'); 

वहाँ है कि केवल POSIX के लिए उपलब्ध हैं बाहर निकलने के लिए कुछ methods available (यानी नहीं Windows) है कि होगा रहे हैं अपनी प्रक्रिया आईडी द्वारा एक प्रक्रिया से बाहर निकलें।

इसके अलावा, ध्यान रखें कि ऐसी मार भेजने के लिए सक्षम हो सकता है() संकेत इस विधि है, जो कहते हैं कि नहीं है कि यह विंडोज के लिए उपलब्ध नहीं है का उपयोग करते हुए:

process.kill(pid, [signal]) 
+0

को मार सके लेकिन मैं अन्य चल रहे node.exe के पिड को कैसे जानूं? – MaiaVictor

+0

@Dokkat 'console.log ('यह प्रक्रिया पिड' + process.pid है); 'अन्य नोड.एक्सई से पिड प्रिंट करेगा, फिर आप उस प्रक्रिया के पिड के कमांड लाइन तर्क के साथ नया निष्पादित करेंगे, और इन आपके द्वारा 'argv' में मौजूद पिड पर 'SIGTERM'' नई स्क्रिप्ट भेजें। सभी जानकारी उपरोक्त उस लिंक में उपलब्ध है। –

+1

@ विकिलिब यदि आप अभी भी रुचि रखते हैं, तो मैं वास्तव में इस विशिष्ट समस्या में भाग गया, और 'process.kill (pid, [signal]) का उपयोग करके मुझे बस इतना ही चाहिए। यदि आप चाहें तो मैं अधिक जानकारी दे सकता हूं। –

0

उदात्त तुम कहते हो sublimeText प्लगइन है, तो मैं एक ही समस्या होती है और अजगर कोड से TCP सर्वर संदेश 'शट डाउन' भेजते हैं, तो

app.js

TCPserver 
     .on('connection', function(socket) 
     { 
      socket.pipe(require('through') 
       (function(data) 
       { //---------------------------- 
        if (data.toString() === 'shutdown') 
        { 
         process.exit(); 
        } 
        //-------------------------- 
       })); 
      socket.end(); 
     }) 
0

Simil

process.kill(pid, [signal])

मेरे मामले में, मैं था: क्या @Alex डब्ल्यू कहा करने के लिए आर्ली, आप इतने लंबे समय आप अपनी प्रक्रिया आईडी, या पीआईडी ​​निम्नलिखित नोड समारोह का उपयोग कर के रूप में प्रक्रिया के लिए एक को मार संकेत भेज सकते हैं पीआईडी ​​आसानी से उपलब्ध है क्योंकि मैं child_process().spawn.pid फैल रहा था। मैंने इसका परीक्षण किया है और यह विन 7 x64 पर काम करता है।

संबंधित मुद्दे