2010-07-21 21 views
57

मैंने स्थापित किया है और osx पर node.js सर्वर चला रहा है। मैंने एक चैट मॉड्यूल डाला है और खुशी से इसे चला रहा है। मैंने कुछ टुकड़े बदल दिए हैं और प्रभाव देखने के लिए सर्वर को पुनरारंभ करने की आवश्यकता है।एक node.js सर्वर को पुनरारंभ कैसे करें

मुझे केवल टर्मिनल विंडो को बंद करके फिर से शुरू करना है और फिर इसे फिर से खोलना है और फिर node chatdemo.js को फिर से चलाया जाना है।

टर्मिनल बंद किए बिना पुनरारंभ करने का कोई भी तरीका?

धन्यवाद।

+0

उपयोग हमेशा के लिए https://github.com/foreverjs/forever। फिर आपको बस टाइप करना होगा 'हमेशा के लिए पुनरारंभ करें' –

उत्तर

71

यदि यह अभी चल रहा है (डेमॉन नहीं) तो बस Ctrl-C का उपयोग करें।

यह तो daemonized तो आप इन्हें आज़मा सकता है:

$ ps aux | grep node 
you PID 1.5 0.2 44172 8260 pts/2 S 15:25 0:00 node app.js 
$ kill -2 PID 

कहाँ PIDps के उत्पादन में संख्या से बदल दिया है।

+6

आप "killall -2 नोड" का भी उपयोग कर सकते हैं, जिसका एक ही प्रभाव है। – user123444555621

+2

_all_ नोड प्रक्रियाओं को मारने की आवश्यकता नहीं है/नहीं। अगर मेरे पास कुछ नोड प्रतिकृति खुली है तो मैं उस लाइन के बाद एक दुखी कैंपर बनूंगा :) – rfunduk

+7

साइड नोट: 'नोहप नोड सर्वर.जेएस और' –

16

इस मामले में आप अक्सर अपने node.js सर्वर को पुनरारंभ कर रहे हैं क्योंकि यह सक्रिय विकास में है और आप हर समय परिवर्तन कर रहे हैं। एक शानदार हॉट रीलोड स्क्रिप्ट है जो आपकी सभी .js फ़ाइलों को देखकर और आपके node.js सर्वर को पुनरारंभ करने के लिए यह संभाल लेगा यदि इनमें से कोई भी फाइल बदल गई है। तेजी से विकास और परीक्षण के लिए बस टिकट।

इसका उपयोग करने के तरीके पर स्क्रिप्ट और स्पष्टीकरण यहां Draco Blue पर है।

+5

एफवाईआई द्वारा एक नोड डिमन शुरू करें, अभी बहुत सारे नोड मॉड्यूल हैं जो इसे समर्पित हैं [नोड मॉड्यूल विकी पेज] पर एक नज़र डालें (https://github.com/joyent/node/wiki/modules#wiki-build-and-deployment)। – Marco

11

मैं एक ही समस्या थी और फिर इस खोल स्क्रिप्ट जो मौजूदा नोड प्रक्रियाओं के सभी को मार देता है लिखा है:

#!/bin/bash 
echo "The following node processes were found:" 
ps aux | grep " node " | grep -v grep 
nodepids=$(ps aux | grep " node " | grep -v grep | cut -c10-15) 

echo "OK, so we will stop these process/es now..." 

for nodepid in ${nodepids[@]} 
do 
echo "Stopping PID :"$nodepid 
kill -9 $nodepid 
done 
echo "Done" 

इस के बाद एक खोल स्क्रिप्ट (xxx.sh) के रूप में सहेजा जाता है फ़ाइल आप जोड़ना चाहते हो सकता है here वर्णित के रूप में यह आपके पैथ पर है।

(कृपया ध्यान दें कि इस ग्रेप के स्वयं के सिवाय "नोड" यह के नाम पर साथ प्रक्रियाओं के सब को मार देगा, इसलिए मुझे लगता है कि कुछ मामलों में यह भी एक समान नाम के साथ कुछ अन्य प्रक्रियाओं को बंद कर सकते हैं)

+2

मै मैक ओएसएक्स पर हूं, मुझे 'cut -c17-20' – ThomasReggi

+0

का उपयोग करना था, क्या यह बिल्कुल' pkill node' के लिए नहीं है? – tandrewnichols

38

विकास के दौरान किए गए परिवर्तनों को देखने के लिए सर्वर को पुनः आरंभ करने का सबसे अच्छा तरीका nodemon

NPM उपयोग करने के लिए स्थापित है nodemon जी

nodemon [अपने ऐप्लिकेशन नाम]

nodemon निर्देशिका में फ़ाइलों को देखेगा जो नोडमन शुरू किया गया था, और यदि वे बदलते हैं, तो यह स्वचालित रूप से आपके नोड एप्लिकेशन को पुनरारंभ करेगा।

चेक nodemon Git रेपो: https://github.com/remy/nodemon

+0

मुझे इस मॉड्यूल के बारे में पता नहीं था, यह कुछ बहुत उपयोगी है, मुझे मेरा django ऐप याद दिलाता है। धन्यवाद। –

+0

शानदार सुझाव। कोड को जल्दी से जांचने के लिए विकास के लिए बहुत ही कुशल। – mbokil

+0

ठीक है धन्यवाद, हम नोड के बजाय नोडमन का उपयोग करने के लिए ग्रहण को कैसे कॉन्फ़िगर कर सकते हैं ..? –

2

का उपयोग करना "को मारने -9 [पीआईडी]" या "killall -9 नोड" मेरे लिए काम किया, जहां "को मारने -2 [पीआईडी]" काम नहीं किया।

2

यदि मैं सिर्फ कंसोल से नोड ऐप चलाता हूं (हमेशा के लिए उपयोग नहीं कर रहा हूं) तो मैं नियंत्रण + सी का उपयोग करता हूं, यह सुनिश्चित नहीं करता कि ओएसएक्स के पास एक ही कुंजी संयोजन समाप्त हो गया है, लेकिन प्रक्रिया आईडी खोजने और इसे मारने से कहीं अधिक तेज है, तो आप आप जिस चैट ऐप का उपयोग कर रहे हैं उसे निम्न कोड भी जोड़ सकते हैं और फिर जब भी आप ऐप बंद करना चाहते हैं तो कंसोल में 'बाहर निकलें' टाइप करें।

process.stdin.resume(); 
process.stdin.setEncoding('utf8'); 

process.stdin.on('data', function(data) { 
    if (data == 'exit\n') process.exit(); 
}); 
2

मैं समझता हूं कि मेरी टिप्पणी विंडोज़ से संबंधित है, लेकिन कोई भी उपयोगी हो सकता है। cmd में जीत रन के लिए: बच उद्धरण के साथ

node my_app.js 

इसके अलावा, आप यह बैच फ़ाइल में उपयोग कर सकते हैं,:

wmic process where "commandline like '%my_app.js%' AND name='node.exe' " CALL Terminate 

तो आप अपने अनुप्रयोग चलना शुरू करने से

wmic process where "commandline like '%%my_app.js%%' AND name='node.exe' " CALL Terminate 
node my_app.js 
2

"Nodemon" कहने के लिए सवाल का जवाब होगा।

लेकिन पर कैसे केवल को मारने के लिए (सभी) नोड दानव (रों), मेरे लिए निम्नलिखित काम करता है:

pkill -HUP node 
संबंधित मुद्दे