मेरा उत्तर एक ps
लिस्टिंग में "फ़ॉबर" की खोज के लिए विशिष्ट उत्तर पर एक भिन्नता है । के तर्क से "-A" "ps"
अधिक पोर्टेबल है "aux"
, मुझे विश्वास है, लेकिन यह परिवर्तन उत्तर के लिए अप्रासंगिक है। विशिष्ट उत्तर इस तरह दिखता है:
$ ps -A -ww | grep [f]oobar
इसके बजाय मैं इस पैटर्न का उपयोग करता हूं:
$ ps -A -ww | grep [^]]foobar
मुख्य लाभ यह है कि इस पैटर्न के आधार पर स्क्रिप्ट लिखना आसान है क्योंकि आप बस [^]]
जिस भी पैटर्न की तलाश कर रहे हैं उसके साथ एक स्थिर स्ट्रिंग को संक्षिप्त करें। आपको स्ट्रिंग के पहले अक्षर को उतारने की ज़रूरत नहीं है और फिर इसे स्क्वायर ब्रेसिज़ के बीच डालें और फिर से उस बैक को फिर से जोड़ दें। जब शेल में स्क्रिप्टिंग होती है, तो [^]]
जिस पैटर्न को आप देख रहे थे, उसके सामने बस चिपकना आसान होता है। बैश में स्ट्रिंग टुकड़ा करना एक बदसूरत चीज है, इसलिए मेरी भिन्नता से बचा जाता है। यह भिन्नता उन पंक्तियों को दर्शाती है जहाँ पैटर्न एक प्रमुख दाएँ-वर्ग-कोष्ठक के बिना मेल खाता है]। चूँकि एक वर्ग ब्रैकेट को बाहर करने के लिए खोज पैटर्न वास्तव में वर्ग ब्रैकेट को पैटर्न में जोड़ता है तो यह कभी भी मेल नहीं खाएगा।
इसलिए आप एक पोर्टेबल psgrep
कमांड लिख सकते हैं। यहां, मैं लिनक्स, ओएस एक्स बीएसडी और अन्य के बीच अंतर के लिए कुछ भत्ता बनाता हूं। यह कॉलम हेडर को ps
और अधिक कस्टम प्रदान करता हैps
प्रारूप जो मेरी ज़रूरतों को पूरा करता है, और अतिरिक्त, अतिरिक्त विस्तृत को सूचीबद्ध करने वाली प्रक्रियाओं को प्रदर्शित करता है ताकि कोई भी कमांड-लाइन तर्क छूट न जाए। खैर, अधिकांश याद नहीं हैं। जावा जावा होने के नाते, यह अक्सर चीजों को सबसे खराब तरीके से करता है, इसलिए आप कुछ जावा सेवाओं को तर्क की अधिकतम अनुमत लंबाई से पहले चलाएंगे जो प्रक्रिया तालिका का ट्रैक रखेगा। मेरा मानना है कि यह 1024 अक्षर है। कमांड-लोन की लंबाई एक प्रक्रिया शुरू करने की अनुमति दी गई है, लेकिन कर्नेल प्रक्रिया तालिका लंबाई में 1K से अधिक का कुछ भी ट्रैक रखने के लिए परेशान नहीं करती है। एक बार कमांड शुरू होने के बाद कमांड-नाम और तर्क सूची की आवश्यकता नहीं होती है, इसलिए प्रक्रिया तालिका में जो संग्रहीत होता है वह सिर्फ सूचनात्मक है।
psgrep ()
{
pattern=[^]]${1};
case "$(uname -s)" in
Darwin)
ps -A -ww -o pid,ppid,nice,pri,pcpu,pmem,etime,user,wchan,stat,command | grep -i -e "^[[:space:]]*PID" -e ${pattern}
;;
Linux)
ps -A -ww -o pid,ppid,tid,nice,pri,pcpu,pmem,etime,user,wchan:20,stat,command | grep -i -e "^[[:space:]]*PID" -e ${pattern}
;;
*) # other UNIX flavors get a minimalist version.
ps -A -ww | grep -i -e ${pattern}
;;
esac
}
grep --colour
।