जवाबों:
कमांड लाइन:
ps -o ppid= -p 1111
समारोह:
ppid () { ps -p ${1:-$$} -o ppid=; }
उपनाम (एक समारोह बेहतर है ):
alias ppid='ps -o ppid= -p'
स्क्रिप्ट:
#!/bin/sh
pid=$1
if [ -z $pid ]
then
read -p "PID: " pid
fi
ps -p ${pid:-$$} -o ppid=
यदि फ़ंक्शन या स्क्रिप्ट को कोई पीआईडी आपूर्ति नहीं की जाती है, तो वे वर्तमान प्रक्रिया के पीपीआईडी को दिखाने के लिए डिफ़ॉल्ट रूप से हैं।
उपनाम का उपयोग करने के लिए, एक पीआईडी की आपूर्ति की जानी चाहिए।
=
चिह्न कम से कम पर ओएस एक्स 10.8.2, आवश्यक नहीं है।
यह उन चीजों में से एक है जो मैं सीखता हूं, भूल जाता हूं, राहत देता हूं, दोहराता हूं। लेकिन यह उपयोगी है। Pstree कमांड का 's' झंडा N पर एक पत्ती के साथ एक पेड़ दिखाता है:
pstree -sA $(pgrep badblocks)
systemd---sudo---mkfs.ext4---badblocks
पैरेंट पीड शेल चर PPID में है, इसलिए
echo $PPID
$PPID
करने से मुझे उस समस्या का हल मिल गया जो Google ने इस पृष्ठ को एक उत्तर के रूप में सुझाया था।
PPID
सभी प्रक्रियाओं की मूल आईडी ( ) प्रिंट करने के लिए , इस कमांड का उपयोग करें:
ps j
एकल प्रक्रिया के लिए, बस पीआईडी पास करें, जैसे ps j 1234
:।
केवल मान निकालने के लिए awk
, जैसे फ़िल्टर आउटपुट :
ps j | awk 'NR>1 {print $3}' # BSD ps
ps j | awk 'NR>1 {print $1}' # GNU ps
सभी माता-पिता के पीआईडी को सूचीबद्ध करने के लिए, इसका उपयोग करें pstree
(इसे स्थापित करें यदि आपके पास नहीं है):
$ pstree -sg 1234
systemd(1)───sshd(1036)───bash(2383)───pstree(3007)
वर्तमान प्रक्रिया के मूल पीआईडी पाने के लिए, का उपयोग करें echo $$
।
pstree
यहाँ मैंने देखा है सबसे अच्छा है।
ps j
बहुत अच्छा है क्योंकि यह कई डिस्ट्रोस पर उपलब्ध है और आसानी से रचना योग्य है
पढ़ें / खरीद / $ पीआईडी / स्थिति। आसानी से लिपिबद्ध किया जा सकता है:
#! / Bin / श पी = $ 1 अगर [-z "$ पी"]; फिर पी पढ़ें फाई cat / proc / "$ P" / स्थिति | grep PPid: | grep -o "[0-9] *"
grep '^PPid:' /proc/$1/status | grep -o '[0-9]*'
आपको जो चाहिए वह यह है। (यह बात करने के लिए यूनिक्स उपकरणों के लिए बहुत ही असामान्यif [ -z ]; then read
है।)
echo $$ | ppid | ppid | ppid
< /some/file grep | grep | ...
।
grep /some/file
$ ps -p $(ps -p $(echo $$) -o ppid=) -o comm=
tmux
थोड़ा और अधिक जटिल उदाहरण जो वर्तमान प्रक्रिया को शुरू करने वाले माता-पिता की कमान की जांच करता है, पूरा कमांड देखने के लिए = = cmd पर कॉम शुरू करें
यहां एक त्वरित समाधान है जो काम करना चाहिए:
ps $$
top
आप जो भी विकल्प चाहते हैं, जैसे चलाएं -u username and -p PID
।
और top
काम करते समय प्रेस f, यह उन विकल्पों की एक सूची दिखाता है जिन्हें आप top
आउटपुट में प्रदर्शित करना चाहते हैं , और प्रदर्शित पैरामीटर कैपिटल अक्षरों में दिखाए जाएंगे और जो पैरामीटर प्रदर्शित नहीं कर रहे हैं या जो छोटे अक्षरों में दिखाए जाएंगे।
इसलिए पैरामीटर से पहले पत्र दर्ज करके आप इसे सक्षम या अक्षम कर सकते हैं। मूल प्रक्रिया आईडी के लिए आपको दर्ज करना होगा bऔर फिर प्रेस Enterकरना होगा, यह शीर्ष आउटपुट में पीपीआईडी प्रदर्शित करेगा।
htop
आप PPID
कॉलम को कॉन्फ़िगर कर सकते हैं ।
grep PPid status |cut -f2
जैसे मेंtime(for((i=0;i<1000;i++));do grep PPid status |cut -f2 >/dev/null;done)
; आश्चर्य है कि अगर वहाँ भी तेजी से कुछ है?