एक नोड .js सर्वर को कैसे पुनरारंभ करें


81

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

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

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

धन्यवाद।


1
हमेशा के लिए github.com/foreverjs/forever का उपयोग करें । फिर आपको सभी टाइप करना हैforever restart
basickarl

जवाबों:


102

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

यदि यह विमुद्रीकृत है तो आप कोशिश कर सकते हैं

$ 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

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


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

2
सभी नोड प्रक्रियाओं को मारने की आवश्यकता नहीं है। अगर मेरे पास कुछ नोड उत्तर खुले तो मैं उस लाइन के बाद एक दुखी टूरिस्ट बन
जाऊंगा

8
ध्यान दें: एक nohup node server.js &
लेव

52

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

npm nodemon -g स्थापित करें

nodemon [आपका ऐप नाम]

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

Nodemon git repo की जाँच करें : https://github.com/remy/nodemon


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

शानदार सुझाव। कोड का परीक्षण करने के लिए विकास के लिए बहुत कुशल है।
mbokil

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

16

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

ड्रेको ब्लू में स्क्रिप्ट और स्पष्टीकरण का उपयोग कैसे किया जाए ।


5
FYI करें अब कई नोड मॉड्यूल हैं जो कि बस समर्पित हैं, नोड मॉड्यूल विकी पृष्ठ पर एक नज़र डालें ।
मार्को

14

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

#!/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) फ़ाइल के रूप में सहेजे जाने के बाद आप इसे अपने पेटीएम में जोड़ना चाह सकते हैं जैसा कि यहां वर्णित है

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


2
मैं मैक cut -c17-20
ओएसएक्स

1
क्या यह वास्तव में नहीं pkill nodeहै?
tandrewnichols

6

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

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

pkill -HUP node

5

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

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

तो आप फिर से अपना ऐप चला सकते हैं:

node my_app.js

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

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

बेहद सुविधाजनक! महान विचार।
21

2

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

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

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

1

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


1
नहीं, मत जाओ kill -9। यह प्रक्रिया को सफाई से खत्म नहीं होने देता है, यह विवरणकर्ताओं को अनाथ छोड़ देगा, और आमतौर पर इसकी आवश्यकता नहीं होती है। एक वेनिला killपर्याप्त है, यदि नहीं, तो kill -INTपर्याप्त होगा। मत जाओ kill -9, जब तक कि वास्तव में जरूरत है, और ज्यादातर समय, ऐसा नहीं है।
थोरियम बीआर

1

पहले खुले टर्मिनल / कमांड लाइन पर तो अपनी परियोजना निर्देशिका में जाओ, अब स्थापित nodemon कमांड का उपयोग करके nodemon --save-देव स्थापित NPM इस आदेश यकीन है कि यह डेवलपर निर्भरता के रूप में सहेजा कर देगा। यदि आप एक्सप्रेस -वे के साथ काम कर रहे हैं तो आपकी पैकेज फाइल में ऐसा दिखेगा

{
  "name": "expressjs-app",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "morgan": "~1.9.1",
    "pug": "^2.0.4"
  },
  "devDependencies": {
    "nodemon": "^2.0.3"
  }
}

अब अपने package.json फ़ाइल में "स्टार्ट" मान को संशोधित करें, उत्पादन के लिए हम एक्ससिटिंग मूल्य का उपयोग करेंगे लेकिन विकास के लिए सर्वर को पुनः आरंभ किए बिना स्रोत फ़ाइल में परिवर्तनों को ट्रैक करने के लिए नोडमॉन का उपयोग करेंगे। स्टार्ट के लिए नए मूल्य के लिए "स्टार्ट" है: "अगर [[$ NODE_ENV == 'प्रोडक्शन']]; तो नोड ।/bin/www; और nodemon ./bin/www; फाई।

अंतिम package.json फ़ाइल की तरह दिखेगा

{
  "name": "expressjs-app",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "if [[$NODE_ENV=='production']]; then node ./bin/www; else nodemon ./bin/www; fi"
  },
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "morgan": "~1.9.1",
    "pug": "^2.0.4"
  },
  "devDependencies": {
    "nodemon": "^2.0.3"
  }
}

nodemon jusy की स्थापना रद्द करने के लिए बस कमांड npm nodemon की स्थापना रद्द करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.