2013-01-13 23 views
5

मुझे लगता है कि मैं इस तरह चलाने के लिए, SSH पर एक NodeJS आवेदन किया है।

जाहिर है, मेरे पास एसएसएच सत्र हर समय खुला नहीं है।

मुझे जो मिल रहा है वह यह है कि कभी-कभी मेरा एप्लिकेशन ऐसे राज्य में हो सकता है जहां यह किसी भी पेज को सर्वर नहीं करेगा। यह एप्लिकेशन से संबंधित हो सकता है, या शायद एक खराब डिस्कनेक्ट एसएसएच सत्र।

किसी भी तरह से, बस, SSH में प्रवेश करने से चल रहा है:

$ tmux attach 

और पैन पर ध्यान दे रही है सब कुछ उत्तरदायी फिर से बना देता है।


मैंने सोचा था कि Node.js की पूरी बात यह थी कि सब कुछ गैर अवरुद्ध है - तो क्या यहाँ हो रहा है?

+0

हम्मम्म, क्या ओएस? – Brad

+0

@ ब्रैड: उबंटू 12.04.1 – Eric

+0

@Eric आपके विवरण से सबकुछ काम करना चाहिए, इसलिए यह आपके कोड में एक समस्या है। – loganfsmyth

उत्तर

2

जब एक फलक है, कॉपी विधा है tmux अपने tty से पढ़ा नहीं है। यदि टीटी में "इन" चलने वाला कुछ प्रोग्राम आउटपुट उत्पन्न करना जारी रखता है, तो ओएस का टीटी बफर अंततः भरने और लिखने की प्रक्रिया/थ्रेड को अवरुद्ध कर देगा। मुझे नोड.जेएस के आंतरिक पता नहीं है, लेकिन यह ब्लॉक करने के लिए stdout/stderr लिखने की अपेक्षा नहीं कर सकता है: console functions कॉलबैक नहीं लगते हैं, इसलिए वे वास्तव में अवरुद्ध हो सकते हैं।

तो, यदि आपके एसएसएच कनेक्शन को गिरा दिया गया था तो फलक जिस पर चल रहा था, उसमें नोड.जेएस अवरुद्ध हो सकता था।

आप गैर अवरुद्ध लॉगिंग को आश्वस्त करने की जरूरत है, तो आप पुनर्निर्देशित करने के लिए एक फाइल करने के लिए चाहते हो सकता है (या टी) अपने stdout और stderr और पूर्व लॉग देखने के लिए less की तरह कुछ का उपयोग करें (tmux 'से परहेज रों कॉपी मोड क्योंकि इससे अवरोध हो सकता है)।

हो सकता है कि कुछ इस तरह:

# Redirect stdout/stderr to a file, running Node.js in the background. 
# Start a "less +F" on the log so that we immediately have a "tail" running. 
node app.js >>app.log 2>&1 & less +F app.log 

या

# This pane will act as a 'tail -f', but do not use copy-mode here. 
# Instead, run e.g. 'less app.log' in another pane to review prior logs. 
node app.js 2>&1 | tee -a app.log 

या, यदि आप एक प्रवेश लाइब्रेरी का उपयोग कर रहे हैं, यह कुछ ऐसा है जो आप स्वचालित रूप से फ़ाइलों को लिखने के लिए उपयोग कर सकते हैं हो सकता है।

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

  • कोई संबंधित समस्या नहीं^_^