2012-10-16 12 views
80

करने के लिए लॉग लिख रहा है नहीं मैं पृष्ठभूमि में एक अजगर स्क्रिप्ट चलाने के लिए निम्न आदेश का उपयोग कर रहा:nohup आउटपुट फ़ाइल

nohup ./cmd.py > cmd.log & 

लेकिन ऐसा लगता है कि nohup लॉग फ़ाइल के लिए कुछ भी नहीं लिख रहा है। cmd.log बनाया गया है लेकिन हमेशा खाली है। पायथन लिपि में, मैं मानक आउटपुट पर प्रिंट करने के लिए print के बजाय sys.stdout.write का उपयोग कर रहा हूं। क्या मैं गलत हूं?

+0

'नोहुप' का आप किस प्रकार का उपयोग कर रहे हैं? बीएसडी संस्करण मौजूदा निर्देशिका में 'nohup.out' नामक फ़ाइल को लिखता है (या' $ HOME/nohup.out' अगर वर्तमान निर्देशिका लिखने योग्य नहीं है)। मुझे आउटपुट फ़ाइल नाम बदलने का कोई तरीका नहीं दिख रहा है ... – wulong

+0

@ वूलोंग यह केवल तभी होता है जब stdout टर्मिनल हो। –

+0

मैंने बिना पुनर्निर्देशन के कमांड को भी आजमाया और यह nohup.out फ़ाइल नहीं बना। मुझे नहीं पता कि यह कौन सा संस्करण है लेकिन मैं सनोस 5.10 पर हूं यदि इससे मदद मिलती है। – ezbentley

उत्तर

69

ऐसा लगता है कि आपको समय-समय पर स्टडआउट फ्लश करने की आवश्यकता है (उदा। sys.stdout.flush())। मेरे परीक्षण में पाइथन स्वचालित रूप से print के साथ प्रोग्राम आउट होने तक स्वचालित रूप से ऐसा नहीं करता है।

+0

धन्यवाद। यह काम। – ezbentley

+13

पायथन के साथ-साथ अन्य सी स्टडीओ-आधारित प्रोग्राम इंटरैक्टिव केस में लाइन-बफरिंग का उपयोग करते हैं (stdout एक tty से जुड़ा हुआ है) और फ़ाइल पर रीडायरेक्ट होने पर ब्लॉक-बफरिंग का उपयोग करता है। अगर 'पायथन-यू' काम नहीं करता है; 'नोहुप' ने अपनी खुद की बफरिंग शुरू की हो सकती है। – jfs

+8

@ जेएफ। सेबेस्टियन आज के रूप में, 'नोहुप' आउटपुट बफर नहीं करता है और 'पायथन-यू' ठीक काम करता है। (लोगों के लिए सिर्फ एक अपडेट) – Pijusn

200

आप उत्पादन बफरिंग से बचने के लिए -u ध्वज के साथ अजगर चला सकते हैं:

nohup python -u ./cmd.py > cmd.log & 
+7

यह बेहतर है! बहुत बहुत धन्यवाद :) – Sadjad

+1

यह एक प्रदर्शन मुद्दा होगा? – kommradHomer

+0

@kommradHomer मुझे लगता है कि यह आपके प्रोग्राम द्वारा stdout/stderr पर आउटपुट की मात्रा पर निर्भर करता है। – vz0

12

का उपयोग करते हुए '-u' 10 'नोहप' मेरे लिए काम किया। सबकुछ "nohup.out" फ़ाइल में सहेजा जाएगा। इस तरह-

nohup python -u code.py & 
+0

@ vz0 से उत्तर के साथ क्या अंतर है? – Deqing

+0

@ डेकिंग में कोई फर्क नहीं पड़ता है। – Overcode

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