एंड्रॉयड 7.0 पैकेज का नाम डालने की प्रक्रिया आईडी पता लगाने के लिए सबसे आसान तरीका है pidof
आदेश का उपयोग करने के लिए किया जाता है के बाद से: 7.0 लोगों के सामने
adb shell pidof my.app.package
एंड्रॉयड में:
usage: pidof [-s] [-o omitpid[,omitpid...]] [NAME]...
Print the PIDs of all processes with the given names.
-s single shot, only return one pid.
-o omit PID(s)
बस इस तरह इसे चलाने ps
कमांड का इस्तेमाल किया और फिर comm
वैल्यू (जो एंड्रॉइड ऐप के लिए पैकेज नाम के अंतिम 15 वर्ण हैं) या grep
कमांड द्वारा अंतर्निर्मित फ़िल्टर का उपयोग करके अपने आउटपुट को पार्स किया। comm
फ़िल्टर काम नहीं करता है अगर नाम के अंतिम 15 वर्ण अंकों से शुरू हुए हैं और grep
को Android 4.2 तक डिफ़ॉल्ट रूप से शामिल नहीं किया गया था। लेकिन उचित प्रक्रिया लाइन के बाद भी PID
मूल्य निकाला जाने की आवश्यकता है।
ऐसा करने के कई तरीके थे।
adb shell "ps | sed -n 's/^[^ ]* *\([0-9]*\).* my\.app\.package$/\1/p'"
फिर समस्या यह है कि sed
Android 6.0 जब तक डिफ़ॉल्ट रूप से शामिल नहीं किया गया था है: यहां बताया प्रक्रिया खोजने और निकालने पीआईडी एक भी sed
आदेश के साथ किया जा सकता है।
लेकिन यदि आपको पुराने डिवाइस का उपयोग करना होगा तो आप हमेशा निम्न एंड्रॉइड संस्करण स्वतंत्र समाधान का उपयोग कर सकते हैं।
adb shell "for p in /proc/[0-9]*; do [[ $(<$p/cmdline) = my.app.package ]] && echo ${p##*/}; done"
एक पीआईडी की तलाश के लिए सबसे लोकप्रिय कारण kill
जैसे कुछ अन्य आदेश में इसका उपयोग करना है: बस एंड्रॉयड खोल बनाया-इन - यह किसी भी बाहरी आदेशों का उपयोग नहीं करता है। आइए मान लें कि हमारे पास logcat
के कई उदाहरण चल रहे हैं और हम उन्हें एक बार में सभी को गहन रूप से पूरा करना चाहते हैं।अभी पिछले आदेश में kill -2
साथ echo
बदल देते हैं:
adb shell "for p in /proc/[0-9]*; do [[ $(<$p/cmdline) = logcat ]] && kill -2 ${p##*/}; done"
'
साथ "
बदलें अगर लिनक्स/OSX खोल से आदेश चल रहा है।
स्रोत
2013-03-25 19:04:01
सभी प्रक्रियाओं लिस्टिंग 'एंड्रॉयड में ps' के लिए डिफ़ॉल्ट व्यवहार है, तो' -e' की जरूरत नहीं है है। और '-f' समर्थित नहीं है –
+1 जबकि -फ grep का उपयोग करके अनावश्यक हो सकता है अच्छी सलाह है - कस्टम फ़िल्टर के लिए उपयोग कर सकते हैं ... – Dori