2012-10-15 12 views
15

का उपयोग कर किसी एप्लिकेशन के नेटवर्क आंकड़े (नेटस्टैट) को ट्रैक करना मुझे लगता है कि यह संभव है, मुझे पूरा यकीन नहीं है कि जानकारी कहां आयोजित की जाती है।एडीबी

मैं विशिष्ट अनुप्रयोगों के लिए ऊपर/नीचे आंकड़े प्राप्त करना चाहता हूं, लेकिन मैं इसे एडीबी का उपयोग करना चाहता हूं, न कि वायरशर्क या नेटटी।

मैं जानता हूँ कि मैं vmData देख

adb shell 
cd proc 
cd pid# 
cat status 

का उपयोग कर सकते हैं और मैं जानता हूँ कि मैं का उपयोग कर netstats देख सकते हैं:

ADB Shell dumpsys netstats details full 

जो मुझे इन परिणामों देता है:

Dev stats: 

    Pending bytes: 1410076 

    Complete history: 

    ident=[[type=MOBILE, subType=COMBINED, subscriberId=310260...]] uid=-1 set=ALL tag=0x0 
NetworkStatsHistory: bucketDuration=3600000 
    bucketStart=1349211600000 activeTime=3600000 rxBytes=19656154 rxPackets=16897 txBytes=615620 txPackets=8084 operations=0 
    bucketStart=1349215200000 activeTime=3600000 rxBytes=28854708 rxPackets=23363 txBytes=1037409 txPackets=12206 operations=0 
    bucketStart=1349218800000 activeTime=3600000 rxBytes=1839274 rxPackets=1565 txBytes=89791 txPackets=914 operations=0 
    bucketStart=1349222400000 activeTime=3600000 rxBytes=17421 rxPackets=88 txBytes=18376 txPackets=95 operations=0 
    bucketStart=1349226000000 activeTime=3600000 rxBytes=506966 rxPackets=788 txBytes=96491 txPackets=859 operations=0 

दुर्भाग्य से यह संयुक्त नेटस्टैट की तरह दिखता है जो अनुप्रयोगों के बीच अंतर नहीं करता है।

तो मेरा सवाल है, क्या कमांड प्रॉम्प्ट का उपयोग करके अद्वितीय पीआईडी ​​# या एप्लिकेशन नामों से नेटवर्क यातायात देखने का कोई तरीका है?


संपादित


ठीक है मैं कुछ अच्छी प्रगति

बनाया इस कोड

adb shell cat proc/1638(thePID)/net/dev > C:\netstats.txt 

मैं यह जानकारी प्राप्त कर सकते हैं:

Inter-| Receive            | Transmit 
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed 
lo:  3564  28 0 0 0  0   0   0  3564  28 0 0 0  0  0   0 
dummy0:  0  0 0 0 0  0   0   0  0  0 0 0 0  0  0   0 
rmnet0: 117062940 191775 0 0 0  0   0   0 19344640 177574 0 0 0  0  0   0 
rmnet1: 2925492 5450 0 0 0  0   0   0 1448544 5664 0 0 0  0  0   0 
rmnet2:  0  0 0 0 0  0   0   0  0  0 0 0 0  0  0   0 
rmnet3:  0  0 0 0 0  0   0   0  0  0 0 0 0  0  0   0 
rmnet4:  0  0 0 0 0  0   0   0  0  0 0 0 0  0  0   0 
rmnet5:  0  0 0 0 0  0   0   0  0  0 0 0 0  0  0   0 
rmnet6:  0  0 0 0 0  0   0   0  0  0 0 0 0  0  0   0 
rmnet7:  0  0 0 0 0  0   0   0  0  0 0 0 0  0  0   0 
    sit0:  0  0 0 0 0  0   0   0  0  0 0 0 0  0  0   0 
    vip0:  0  0 0 0 0  0   0   0  0  0 0 0 0  0  0   0 

दुर्भाग्य से इन नंबरों को एंड्रॉइड बाजार स्थान से "नेटवर्क उपयोग" जैसे कार्यक्रमों के साथ दोबारा जांचने के बाद, मैंने पाया कि ये संख्या पूरे डिवाइस में कुल ऊपर और नीचे हैं।

तो यह अभी भी मुझे छोड़ देता है, कैसे/कहाँ बिल्ली "नेटवर्क उपयोग" और "स्पेयर पार्ट्स" जैसे प्रोग्राम हैं, जिससे उनकी जानकारी प्राप्त हो रही है?

+0

वाह, भारी मात्रा में । इसे पोस्ट करने के लिए धन्यवाद। –

+0

धन्यवाद, अगर कुछ और है तो आपको जानने या कोई प्रश्न पूछने की ज़रूरत है, मुझे बताएं। संभावना है कि मैंने इसके लिए कुछ लिखा है या आपको सही दिशा में इंगित कर सकता हूं। – Nefariis

+0

@Nefarii मैं एक बहुत ही समान काम कर रहा हूं, लेकिन सुपर उपयोगकर्ता विशेषाधिकारों के बिना, क्या इसे – SwiftParser

उत्तर

19

अच्छी तरह से मुझे पता चला कि "स्पेयर पार्ट्स" और "नेट उपयोग" से उनकी जानकारी प्राप्त होती है।

adb shell cat proc/uid_stat/(uid#)/tcp_rcv 
adb shell cat proc/uid_stat/(uid#)/tcp_snd 

समस्या मैं कैसे वे इसे कर रहे हैं, हालांकि साथ देखते हैं कि टीसीपी के उपयोग के लिए यह केवल खातों और के लिए और UDP उपयोग खाता नहीं करता है।

कुल tx_bytes और rx_bytes को समझने का एकमात्र तरीका इस आदेश के माध्यम से है।

adb shell cat /proc/net/xt_qtaguid/stats 

या आप इसे एक पाठ फ़ाइल में बदलने का है और यह आसान देखने के लिए करना चाहते हैं।

------ QTAGUID STATS INFO (su root cat /proc/net/xt_qtaguid/stats) ------ 

idx iface acct_tag_hex uid_tag_int cnt_set rx_bytes rx_packets tx_bytes tx_packets  rx_tcp_bytes rx_tcp_packets rx_udp_bytes rx_udp_packets rx_other_bytes rx_other_packets tx_tcp_bytes tx_tcp_packets tx_udp_bytes tx_udp_packets tx_other_bytes tx_other_packets 
2 rmnet0 0x0 0 0 18393 326 8506 166 10889 267 7504 59 0 0 4180 101 3397 54 929 11 
3 rmnet0 0x0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
4 rmnet0 0x0 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
5 rmnet0 0x0 1000 1 7181 14 1834 19 7023 12 158 2 0 0 1616 16 218 3 0 0 
6 rmnet0 0x0 10001 0 5723 19 3162 26 5723 19 0 0 0 0 3162 26 0 0 0 0 
7 rmnet0 0x0 10001 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
8 rmnet0 0x0 10007 0 1895740 1570 44556 898 1895740 1570 0 0 0 0 44556 898 0 0 0 0 
9 rmnet0 0x0 10007 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
10 rmnet0 0x0 10019 0 5319 12 2546 14 5319 12 0 0 0 0 2546 14 0 0 0 0 
11 rmnet0 0x0 10019 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
12 rmnet0 0x0 10026 0 6866 19 2846 24 6866 19 0 0 0 0 2846 24 0 0 0 0 
13 rmnet0 0x0 10026 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

से अधिक चौथा टैब (1000, 10001, आदि) यूआईडी नंबर है:

adb shell cat /proc/net/xt_qtaguid/stats > C:\Netstats.txt 

यह आपको कुछ है कि इस तरह दिखता है देता है।पता लगाने के लिए सबसे आसान तरीका क्या आवेदन अंतर्गत आता है करने के लिए क्या यूआईडी नंबर है:

adb shell dumpsys package > C:\apps.txt 

करने के लिए नीचे जाओ "पैकेज:" अनुभाग में, और उसके बाद इसकी पहली पंक्ति के बाद नीचे प्रक्रिया नाम लेबल "उपयोगकर्ता id ="।

अब उपरोक्त चार्ट को पढ़ने के लिए, मुख्य दो संख्या जिन्हें आप जानना चाहते हैं, वे 6 वें नंबर (आरएक्स_बाइट्स) और 8 वें नंबर (tx_bytes) में हैं। किसी भी विशेष आवेदन के लिए, उन दो संख्याओं को सभी बाइट्स के अंदर और बाहर सटीक चित्रण होना चाहिए।

का आनंद लें।

+1

यह 2.3 पर काम नहीं कर रहा है ऐसा लगता है कि/proc/net/xt_qtaguid/आँकड़े जिंजरब्रेड के लिए उपलब्ध नहीं है। –

+0

जब मैंने पहली बार इसे विकसित करना शुरू किया, मुझे विश्वास है कि मैं इसे जिंजरब्रेड और आइसक्रीम सैंडविच दोनों के साथ कर रहा था ... हालांकि मुझे लगता है कि इसे तब तक कम से कम 2.3.6 होना चाहिए था .... इसके अलावा, आप अभी भी क्या कर रहे हैं 2.3 पर? क्या आप मैन्युअल रूप से फ़ोल्डर में जा सकते हैं? "adb shell"> "cd/proc/net/xt_qtaguid? यदि आप ऐसा कर सकते हैं तो" ls "टाइप करें और देखें कि" आँकड़े "मौजूद हैं या नहीं, तो बस" बिल्ली आंकड़े "टाइप करें – Nefariis

+0

/proc/net/xt_qtaguid/2.3 –

1

Nefarii की टिप्पणी, एक विशेष आवेदन के लिए यूआईडी पता लगाने के लिए सबसे आसान तरीका है करने के लिए एक टुकड़ा जोड़ना, जैसे, com.example.myapp, है: यहाँ उपयोगी जानकारी के

adb shell dumpsys package com.example.myapp | grep userId=

+0

Ive कभी भी grep चीज़ को सही तरीके से काम करने में सक्षम नहीं था, यहां तक ​​कि व्यस्त बॉक्स के ताजा इंस्टॉल के साथ भी। – Nefariis

+1

grep एंड्रॉइड के तहत काम नहीं करता है; आप इसे मेजबान पर चलाते हैं। मुझे लगता है कि यदि आप विंडोज से विकसित करने की कोशिश कर रहे हैं, तो आपको कुछ समस्याएं होने जा रही हैं। –

संबंधित मुद्दे