सार: पृष्ठभूमि में एक इंटरैक्टिव कार्य कैसे चलाएं?पृष्ठभूमि खोल स्क्रिप्ट में नेटकैट/बिल्ली का उपयोग करना (रोकथाम (टीटीआई इनपुट) से कैसे बचें?)
विवरण: मैं पृष्ठभूमि कार्य के रूप में राख खोल (Busybox) के तहत इस सरल लिपि को चलाने की कोशिश कर रहा हूं।
myscript.sh &
हालांकि स्क्रिप्ट तुरंत बंद हो जाता है ...
[1] + रोका गया (tty इनपुट) myscript.sh
myscript .sh सामग्री ... (केवल अवशिष्ट हिस्सा, अन्य तो मैं सिगिनट, SIGHUP आदि जाल)
#!/bin/sh
catpid=0
START_COPY()
{
cat /dev/charfile > /path/outfile &
catpid = $!
}
STOP_COPY()
{
kill catpid
}
netcat SOME_IP PORT | while read EVENT
do
case $EVENT in
start) START_COPY;;
stop) STOP_COPY;;
esac
done
सरल कमांड लाइन परीक्षणों से मुझे पता चला कि बॉट बिल्ली और नेटकैट tty से पढ़ने की कोशिश करते हैं। ध्यान दें कि इस नेटकैट संस्करण में टीटी को दबाए रखने के लिए नहीं है।
अब माइस्क्रिप्ट को रोकने से बचने के लिए क्या किया जा सकता है?
बातें मैंने कोशिश की है इसलिए किसी भी सफलता नहीं मिली:
1) netcat/बिल्ली ... </dev/tty (या tty
के उत्पादन)
2) ब्लॉक चल रहा है बिल्ली युक्त और() का उपयोग कर एक सबहेल में netcat। यह काम कर सकता है लेकिन फिर बिल्ली के पीआईडी को कैसे पकड़ें?
आप विशेषज्ञों केसे अधिक ...
समस्या अभी भी मौजूद। आप सभी के लिए एक साधारण परीक्षण की कोशिश करने के लिए:
1) एक टर्मिनल में रन netcat -l -p 11111 (& बिना)
2) एक और टर्मिनल रन netcat स्थानीय होस्ट में 11111 & (यह एक के बाद बंद कर देना चाहिए जबकि संदेश बंद (टीटीई इनपुट) के साथ)
इससे कैसे बचें?
कोई और विशेषज्ञ नहीं? कोई उपाय? – LovelyVirus
यदि आप सबप्रोसेस से इनपुट और आउटपुट कैप्चर करने के ठीक हैं, तो आप 'स्क्रिप्ट' का उपयोग कर सकते हैं। यदि यह काम नहीं करेगा, तो आप ['socat'] (http://www.dest-unreach.org/socat/doc/socat.html) पर शोध करने का प्रयास कर सकते हैं; इसमें उन्नत पीटीवाई हैंडलिंग है, लेकिन मुझे पता नहीं लगा कि एसटीडीआईएन को कैप्चर करने के लिए इसे कैसे प्राप्त किया जाए। –
भ्रम स्क्रिप्ट का हिस्सा है जो काम नहीं करता है। समाज मेरे पास पर्यावरण के लिए विकल्प नहीं है (इसे वहां नहीं मिल सकता है)। नेटकैट पर/dev/ttyS0 को रीडायरेक्ट करने के लिए थक गया है और ऐसा लगता है कि यह काम कर रहा है लेकिन फिर यह सिग्नल प्राप्त करना बंद कर देता है। – LovelyVirus