जवाबों:
pgrep
आउटपुट विकल्प बहुत सीमित हैं। ps
महत्वपूर्ण सूचनाओं को प्राप्त करने के लिए आपको लगभग निश्चित रूप से इसे वापस भेजने की आवश्यकता होगी । आप अपने में बैश फ़ंक्शन का उपयोग करके इसे स्वचालित कर सकते हैं ~/.bashrc
।
function ppgrep() { pgrep "$@" | xargs --no-run-if-empty ps fp; }
फिर कमांड से कॉल करें।
ppgrep <pattern>
ps
झंडे के लिए एक हाइफ़न की आवश्यकता है:function ppgrep() { pgrep "$@" | xargs ps -fp 2> /dev/null; }
-r
जो केवल एक सूची प्राप्त होने पर कमांड निष्पादित करेगा।
ps fp $(pgrep -d, "$@")
का उपयोग कर के pgrep
साथ गठबंधन !ps
xargs
pgrep <your pgrep-criteria> | xargs ps <your ps options> -p
उदाहरण के लिए प्रयास करें
pgrep -u user | xargs ps -f -p
की एक पूरी प्रक्रिया सूची प्राप्त करने के लिए user
।
यह अच्छा है कि आप कॉलम नामों के साथ पहली पंक्ति रखें। grep
हमेशा कॉलम नाम छोड़ता है।
निम्नलिखित केवल आपको PID + पूर्ण कमांड-लाइन देता है। "सभी जानकारी ps
करता है" के लिए, अन्य उत्तर देखें ...
अधिकांश linuxes procps-ng का उपयोग करते हैं । चूंकि 3.3.4 (2012 में जारी), pgrep -a
( --list-full
) पूर्ण कमांड लाइन दिखाता है।
नोट: डिफ़ॉल्ट pgrep द्वारा केवल उस पैटर्न से मेल खाता है जिसे आप निष्पादन योग्य नाम के विरुद्ध देते हैं। यदि आप पूर्ण कमांड लाइन के विरुद्ध मिलान करना चाहते हैं (जैसा कि grepping ps करता है), -f
( --full
) विकल्प जोड़ें ।
पुराने संस्करणों में (मूल प्रॉप्स प्रोजेक्ट सहित ), -l
विकल्प ने जानकारी दिखाई , लेकिन यह व्यवहार भिन्न है:
pgrep -fl
पूर्ण कमांड लाइन के खिलाफ पैटर्न का मिलान किया और पूरी कमांड लाइन दिखाई।pgrep -l
अकेले ने केवल निष्पादन योग्य नाम का मिलान किया और केवल निष्पादन योग्य नाम दिखाया। निश्चित नहीं है कि कोड * बीएसडी का उपयोग क्या है, लेकिन उनके आदमी पृष्ठ पुराने -fl
व्यवहार का दस्तावेजीकरण करते हैं।
दुर्भाग्य से आप -fl
हाल ही में procps-ng, -f
( --list-name
) में हमेशा उपयोग नहीं कर सकते हैं केवल निष्पादन योग्य नाम प्रिंट करता है।
के GNU संस्करण के pgrep
लिए -i
(केस-इन्सेंसिविटी) समर्थित नहीं है, और लंबे + फ़ज़ी आउटपुट के साथ प्राप्त किया जाता है -af
।
$ pgrep -af apache
OUTPUT:
1748 /usr/sbin/apache2 -k start
मैन पेज :
-a, --list-full
List the full command line as well as the process ID. (pgrep only.)
-f, --full
The pattern is normally only matched against the process name.
When -f is set, the full command line is used.
OSX पर (और बीएसएनडी पर) -l
( लंबे आउटपुट ) के साथ संयोजन में -f
( पूर्ण तर्क सूचियों के खिलाफ मैच ) पूरा कमांड प्रदर्शित करेगा ( -i
केस-असंवेदनशीलता जोड़ता है):
$ pgrep -fil ssh
OUTPUT:
33770 ssh: abc@192.168.0.123-22 [mux] t
आदमी पेज :
-l Long output. For pgrep, print the
process name in addition to the
process ID for each matching
process. If used in conjunction
with -f, print the process ID and
the full argument list for each
matching process. For pkill, dis-
play the kill command used for
each process killed.
Grep के लिए -v विकल्प का उपयोग करें - यह अनुरोधित पैटर्न के तहत सब कुछ लौटाता है।
ps -ef | grep <process> | grep -v grep
pgrep -u user | xargs ps -f -p
मुझे नहीं लगता कि आपके द्वारा प्राप्त की जाने वाली सबसे अधिक जानकारी है, नाम और प्रक्रिया आईडी -l विकल्प का उपयोग करके pgrep।
ps सभी प्रकार के स्वरूपण विकल्पों का समर्थन करता है, इसलिए मैं सिर्फ एक उपनाम बनाना चाहूंगा कि आप टाइपिंग को सहेजना क्या चाहते हैं। grep -v grep
किसी भी grep प्रक्रियाओं को बाहर करने के लिए अतिरिक्त पाइप को शामिल करने के लिए आउटपुट से grep प्रक्रिया को बाहर करने का एक सरल तरीका ।
grep
प्रक्रिया को खत्म करने के लिए , आप अपने पैटर्न के हिस्से के रूप में कोष्ठक का उपयोग कर सकते हैं:
ps -ef | grep '[t]ty'
आप इसके साथ कर सकते हैं ps
और pgrep
:
ps -fp $(pgrep -d, tty)
इससे मुझे अनुमान लगाने में मदद मिलेगी:
पी एस ऑकवा
function ppgrep() { pgrep "$@" | xargs ps fp 2> /dev/null; }
अन्यथा, यदि कोई प्रक्रिया आपकी खोज से मेल नहीं खाती है, तो यह संपूर्णps
उपयोग मेघालय को डंप करता है ।