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
Post a Comment