लिनक्स: क्या केवल कर्नेल स्पेस थ्रेड्स / प्रक्रिया को देखना संभव है?


27

मुझे पता है कि कार्यक्रमों के दो "स्तर" हैं: उपयोगकर्ता स्थान और कर्नेल स्थान।

मेरा प्रश्न है: मैं केवल कर्नेल प्रोग्राम देखना चाहता हूं, या बेहतर: कर्नेल स्थान पर प्रोग्राम।

क्या यह दृष्टिकोण सही है?

ps -ef|grep "\["

root         1     0  0 20:23 ?        00:00:00 init [4]
root         2     0  0 20:23 ?        00:00:00 [kthreadd]
root         3     2  0 20:23 ?        00:00:00 [ksoftirqd/0]
root         5     2  0 20:23 ?        00:00:00 [kworker/0:0H]
root         7     2  0 20:23 ?        00:00:06 [rcu_sched]
root         8     2  0 20:23 ?        00:00:00 [rcu_bh]
root         9     2  0 20:23 ?        00:00:00 [migration/0]
root        10     2  0 20:23 ?        00:00:00 [migration/1]
root        11     2  0 20:23 ?        00:00:00 [ksoftirqd/1]
root        13     2  0 20:23 ?        00:00:00 [kworker/1:0H]
root        14     2  0 20:23 ?        00:00:00 [migration/2]
....

5
> कर्नेल स्पेस प्रोग्राम देखना संभव है? ... हाँ! आपको बस अपने सीसीडी पर सही खगोलीय फिल्टर की आवश्यकता है ... ;-)
रबरस्टैम्प


5
@steve कर्नेल स्थान कार्यक्रम वास्तव में मॉड्यूल के लिए कड़ाई से स्पर्शरेखा हैं। सभी मॉड्यूल में प्रक्रियाएं नहीं होती हैं, और सभी प्रक्रियाएं मॉड्यूल नहीं होती हैं।
क्रिस डाउन

3
प्रश्न गलत है: आप कर्नेल प्रक्रियाएँ (या कर्नेल थ्रेड्स, या कर्नेल कार्य) नहीं देखना चाहते हैं कर्नेल प्रोग्राम .... इसमें केवल एक ही प्रोग्राम शामिल है: कर्नेल (और कर्नेल मॉड्यूल कर्नेल में जोड़े जाते हैं )।
बेसिल स्टारीनेविच

मैं अब ठीक
करूँगा

जवाबों:


42

कर्नेल प्रक्रियाएं (या "कर्नेल थ्रेड्स") PID 2 ( kthreadd) के बच्चे हैं , इसलिए यह अधिक सटीक हो सकता है:

ps --ppid 2 -p 2 -o uname,pid,ppid,cmd,cls

--deselectचयन को पलटने के लिए जोड़ें और केवल उपयोगकर्ता-स्थान प्रक्रियाओं को देखें।

(यह सवाल काफी की एक सटीक उलटा था इस एक ।)

2.4। * और पुराने कर्नेल में, यह पीआईडी ​​2 सम्मेलन अभी तक मौजूद नहीं था।


क्या यह हमेशा सच होता है? इस प्रश्न में चौथी टिप्पणी देखें: stackoverflow.com/q/12213445/1971003
लड़के अवराम

यह संभव है कि 2.6 साल की शुरुआत में। * गुठली "पीआईडी ​​2 के बच्चे" कन्वेंशन में रूपांतरण काफी पूरा नहीं था। जैसा कि हाईकिंग इंगित करता है, पीआईडी ​​2 का नाम भी kthreadd2.6.18 तक पूरी तरह से स्थिर नहीं हुआ था । यदि आप सटीक विवरणों में रुचि रखते हैं, तो kernel.org पर जाएं और kernel/kthread.cफ़ाइल के प्रारंभिक इतिहास में नीचे जाने के लिए git ब्राउज़र इंटरफ़ेस का उपयोग करें।
टेल्कोएम

4

कर्नेल थ्रेड्स रैम का उपयोग बिल्कुल नहीं करते हैं (या कम से कम प्रदर्शित किया जाता है कि वे किसी का उपयोग न करें):

ps -eo cmd,vsize,rss | grep -E ' 0 +0$'

1

यदि आपने tunaस्थापित किया है तो आप सभी कर्नेल थ्रेड्स को इस तरह सूचीबद्ध कर सकते हैं:

$ tuna -U -P
                      thread       ctxt_switches
    pid SCHED_ rtpri affinity voluntary nonvoluntary             cmd 
  2      OTHER     0     0xff       290            1        kthreadd  
  3      OTHER     0     0xff         2            0          rcu_gp  
  4      OTHER     0     0xff         2            0      rcu_par_gp  
  6      OTHER     0        0        13            0 kworker/0:0H-kblockd  
  9      OTHER     0     0xff         2            0    mm_percpu_wq  
  10     OTHER     0        0       448            0     ksoftirqd/0
[..]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.