bash - How to get the PID of a process in a pipeline -


निम्नलिखित सरल उदाहरण पर विचार करें:

  my_prog | awk '...'> आउटपुट .csv और my_pid = "$!" # जीआरआईडी के लिए पीआईडी ​​के बजाय my_prog के लिए नींद 10 मारो $ my_pid # my_prog अभी भी अपने बफर में डेटा है कि awk कभी नहीं देखा डेटा खो दिया है!  

बैश में, $ my_pid पीआईडी ​​को awk के लिए इंगित करता है। हालांकि, मुझे my_prog के लिए पीआईडी ​​की आवश्यकता है अगर मैं awk को मारता हूं, my_prog इसे आउटपुट बफर फ्लश करने के लिए नहीं जानता और डेटा खो जाता है। तो, एक my_prog के लिए पीआईडी ​​कैसे प्राप्त करेगा? ध्यान दें कि ps aux | grep my_prog काम नहीं करेगा क्योंकि कई my_prog हो रहा है।

नोट: परिवर्तित cat से awk '...' की आवश्यकता को स्पष्ट करने के लिए मुझे क्या चाहिए।

< P> बस एक ही मुद्दा था मेरा समाधान:

<प्री> process_1 | प्रक्रिया_2 & amp; PID_OF_PROCESS_2 = $! PID_OF_PROCESS_1 = `नौकरियां-पी`

बस सुनिश्चित करें कि process_1 पहली पृष्ठभूमि प्रक्रिया है अन्यथा, आपको jobs -l के पूर्ण आउटपुट को पार्स करने की आवश्यकता है।


Comments

Popular posts from this blog

c# - sqlDecimal to decimal clr stored procedure Unable to cast object of type 'System.Data.SqlTypes.SqlDecimal' to type 'System.IConvertible' -

Calling GetGUIThreadInfo from Outlook VBA -

Obfuscating Python code? -