मुझे नहीं पता था कि यह एसओ पर था (क्योंकि यह एक कोडिंग बग है) लेकिन सोचा कि आप लोग उपयोग किए गए सॉफ़्टवेयर की सूक्ष्मताओं के बारे में अधिक जानकार होंगे (इसलिए शायद यूएंडडी पर भी विचार किया जा सकता है)।
यहां न्यूनतम कोड स्क्रिप्ट है (पूर्ण स्क्रिप्ट के लिए संपादन देखें, एक कारण है कि मैं इसे इस तरह से कर रहा हूं);
#/bin/bash
nohup {SERVERCOMMAND} > currentOutput.log 2>&1 &
less +F currentOutput.log
यह क्या करने की कोशिश करता है पृष्ठभूमि में एक सर्वर चलाया जाता है, जो लॉग फ़ाइल के लिए आउटपुट करता है।
फिर मैंने follow
उस लॉग फ़ाइल का उपयोग किया less +F
। जैसा कि आप करते हैं, इससे बाहर निकलने के लिए आपको हिट करने से पहले ctrl+ हिट करना होगा ।cQ
क्या होता है, जब मैं ctrl+ कमांड के cअंदर less
( tailing
इसे रोकने के लिए ) किसी तरह सर्वर nohup
को ऊपर से शुरू कर देता है ! और कुछ भी प्रभावित नहीं है। मैं लॉग को फिर से सिलाई शुरू करने के लिए shift+ कर सकता हूं f(जो कि सर्वर के मारे जाने के बाद से कोई नई जानकारी नहीं मिलती है) और अगर मैं हिट Qकरता हूं तो बाकी स्क्रिप्ट सामान्य रूप से निष्पादित होती है।
क्या आप जानते हैं कि ऐसा क्यों होता है? इससे कैसे बचें / मैं कुछ और उपयोग करूं?
PS
सर्वर प्रोग्राम एक के लिए सुन सकता है ^C
, जो कि समस्या हो सकती है; क्या मुझे रोकने के लिए कुछ किया जा सकता है? जैसे, जब मैं सिर्फ {SERVERCOMMAND}
अपने दम पर चलता हूं (अवरुद्ध तरीके से), मैं हिट कर सकता हूं ctrl+ c, जो तुरंत इसे नहीं मारता है; यह प्रिंट करता है Received ^C signal, shutting down
(और फिर खुद को मारता है)। यह तब होता है जब मैं ^C
अंदर होता हूं less
(ए फाइनल Received ^C signal, shutting down
लॉग को लिखा जाता है)।
पीपीएस
मैं कई चीजों की कोशिश कर रहा हूं (कोई भी काम नहीं किया);
बदलकर स्क्रिप्ट से स्टड को डिस्कनेक्ट करने की कोशिश कर रहा है
nohup {SERVERCOMMAND} > currentOutput.log 2>&1 & to nohup echo '' | {SERVERCOMMAND} > currentOutput.log 2>&1 & or nohup cat /dev/null/ | {SERVERCOMMAND} > currentOutput.log 2>&1 &
stty intr ^G
रुकावट कमांड को बदलने के लिए उपयोग कर रहा है, लेकिन तब ctrl+ gने^C
वैसे भी किया था (इसलिए यह मेरे टर्मिनल एमुलेटर के साथ एक मुद्दा हो सकता हैkonsole
) ;कोष्ठक में
nohup
& / याless
पंक्ति रखकर (इसे उप-स्तरीय बनाने के लिए)xterm
इसके बजाय स्क्रिप्ट चल रही हैkonsole
nohup
SIGHUP
सिग्नल प्राप्त करने से प्रक्रिया को रोकता है जबकि CTRL + C SIGINT
सिग्नल भेजता है। इसीलिए nohup
आपके पास अपेक्षित प्रभाव नहीं है।
I think it is due to the handling within the database software, not on the shell
। एक कार्यक्रम यह कैसे करेगा? मैं इसे कैसे रोक सकता हूं?