जवाबों:
कमांड लाइन:
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); आश्चर्य है कि अगर वहाँ भी तेजी से कुछ है?