बैश स्क्रिप्ट का उपयोग करके एक प्रक्रिया को स्वचालित करें


0

मेरे पास एक unimrcp क्लाइंट प्रक्रिया (ucp) है और मैं शेल स्क्रिप्ट का उपयोग करके कई ucp स्पॉन करना चाहता हूं।

जब भी मैं एक ucp स्पॉन करता हूं, तो यह एक कमांड लाइन देता है, जिसका उपयोग करके मैं ucp में विभिन्न प्रकार के कार्य कर सकता हूं। इसलिए मैं एक स्क्रिप्ट लिखना चाहता हूं जो निम्नलिखित प्राप्त करता है,

  1. एक ucp प्रक्रिया को स्पॉन करें
  2. ucp की कमांड लाइन दिखाई देने तक प्रतीक्षा करें
  3. एक कमांड "रन रिकॉग" के साथ ucp की कार्यक्षमता तक पहुंचें

ध्यान दें कि ./ucp && रन रिकॉग तब से काम नहीं करता है। ucp कमांड लाइन से बाहर निकलने के बाद ही समाप्त होता है।

मैंने इसके लिए निम्नलिखित प्रयास किए,

#!/bin/bash                                                                     
./ucp &                                                               
fg                                                                              
echo "run recog uni2"                                                           
wait                                                                            

हालाँकि, ./ucp &क्लाइंट प्रक्रिया शुरू करने और फिर "?????" लिखने के परिणाम मिलते हैं। क्लाइंट कंसोल पर "????" के परिणामस्वरूप आदेश नहीं मिला। निम्नलिखित लॉग हैं,

./script.sh

2018-10-23 14:36:53:618851 [INFO]   Set Property ip:127.0.0.1
2018-10-23 14:36:53:618851 [INFO]   Register Codec [PCMU]
2018-10-23 14:36:53:618851 [INFO]   Register Codec [PCMA]
2018-10-23 14:36:53:618851 [INFO]   Register Codec [L16]
2018-10-23 14:36:53:618851 [NOTICE] Register Resource [speechsynth]
2018-10-23 14:36:53:618851 [NOTICE] Register Resource [speechrecog]
2018-10-23 14:36:53:620588 [NOTICE] Register Resource [recorder]
2018-10-23 14:36:53:620588 [NOTICE] Register Resource [speakverify]
2018-10-23 14:36:53:620593 [INFO]   Register Resource Factory
2018-10-23 14:36:53:620600 [NOTICE] Create SofiaSIP Agent [SIP-Agent-1] [1.12.11-227-g73efc97] sip:127.0.0.1:8062;transport=udp
2018-10-23 14:36:53:620600 [INFO]   Register Signaling Agent [SIP-Agent-1]
2018-10-23 14:36:53:620600 [NOTICE] Create RTSP Client [RTSP-Agent-1] [100]
2018-10-23 14:36:53:620600 [INFO]   Register Signaling Agent [RTSP-Agent-1]
2018-10-23 14:36:53:620600 [NOTICE] Create MRCPv2 Agent [MRCPv2-Agent-1] [100]
2018-10-23 14:36:53:620600 [INFO]   Register Connection Agent [MRCPv2-Agent-1]
2018-10-23 14:36:53:620600 [NOTICE] Create Media Engine [Media-Engine-1]
unknown command: ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

प्रश्न में मैंने जो उल्लेख किया है, उसे प्राप्त करने का यह सही तरीका है? (एक ग्राहक स्पॉन और उसके कंसोल पर एक कमांड चलाएं)? यदि हाँ तो "?????" पढ़ने में "./ucp &" परिणाम क्यों आता है? यह देखते हुए कि इसके कंसोल के इनपुट के रूप में? ध्यान दें कि यह नहीं होता है अगर मैं बस आग लगाता हूं "./ucp और fg" कंसोल से। जब मैं इसे कंसोल से करता हूं तो यह कमांड के अपेक्षित व्यवहार को देख सकता है। जब मैं स्क्रिप्ट निष्पादित करने का प्रयास करता हूं तो समस्या प्रकट होती है।

यदि यह एक सही तरीका नहीं है, तो मैं कैसे प्राप्त कर सकता हूं जो मैंने प्रश्न में उल्लेख किया है? (1, 2, और 3)

धन्यवाद



ठीक है। मैं दूसरी साइट से प्रश्न हटा दूंगा। सूचक के लिए धन्यवाद।
sbhatt

जवाबों:


1

लगता है कि आप पृष्ठभूमि प्रक्रिया की गति को इनपुट भेजना चाहते हैं। ऐसा करने का एक तरीका नामित पाइप का उपयोग करना होगा।

# Create a named pipe
mkfifo /tmp/ucp-input

# Run the background service using the named pipe as stdin
cat /tmp/ucp-input | ./ucp &

# Echo commands to the named pipe to send them to the service's stdin
echo "run recog uni2" > /tmp/ucp-input

मैंने इसे एक साधारण बैश स्क्रिप्ट के साथ परीक्षण किया है जो इनपुट को वापस गूँजता है और यह उम्मीद के मुताबिक काम करता है।


जवाब के लिए धन्यवाद। यह वास्तव में एक दिलचस्प समाधान है। हालाँकि, यह बिल्ली / tmp / ucp-input में फंस गया | ./ucp & part उसी अंक में चलता है जिसका मैंने प्रश्न में उल्लेख किया है। unix.stackexchange.com/questions/477612/… में उस विशेष समस्या का हल है। लेकिन मुझे आपका समाधान पसंद है। यह साफ-सुथरा है। मुझे देखने दें कि क्या प्रश्न में उल्लिखित मुद्दा संभाला जा सकता है। धन्यवाद फिर से
sbhatt
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.