Linux: có thể chỉ nhìn thấy các luồng / tiến trình không gian kernel?


27

Tôi biết có hai "cấp độ" chương trình: Không gian người dùng và không gian kernel.

Câu hỏi của tôi là: Tôi muốn chỉ xem các chương trình kernel, hoặc tốt hơn: các chương trình trên không gian kernel.

Cách tiếp cận này có đúng không?

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
> có thể xem các chương trình không gian kernel? ... Vâng! Bạn chỉ cần có bộ lọc thiên văn chính xác trên CCD của mình ... ;-)
RubberStamp


5
Các chương trình không gian @steve Kernel thực sự nghiêm ngặt đối với các mô-đun. Không phải tất cả các mô-đun đều có quy trình và không phải tất cả các quy trình đều là mô-đun.
Chris Xuống

3
Câu hỏi sai: bạn muốn xem các tiến trình kernel (hoặc các luồng nhân hoặc các tác vụ kernel) không phải là các chương trình kernel .... Chỉ có một chương trình liên quan: kernel (và các mô-đun kernel được thêm vào kernel).
Stilenkevitch Basile

Tôi sẽ sửa ngay bây giờ
elbarna 17/12/17

Câu trả lời:


42

Các tiến trình hạt nhân (hoặc "các luồng nhân") là con của PID 2 ( kthreadd), vì vậy điều này có thể chính xác hơn:

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

Thêm vào --deselectđể đảo ngược lựa chọn và chỉ xem các quy trình không gian người dùng.

(Câu hỏi này khá giống với câu hỏi ngược này .)

Trong 2.4. * Và các hạt nhân cũ hơn, quy ước PID 2 này chưa tồn tại.


Có phải nó luôn luôn đúng không? Xem bình luận thứ tư trong câu hỏi này: stackoverflow.com/q/12213445/1971003
Guy Avraham

Có thể là vào đầu 2.6. * Kernels việc chuyển đổi sang quy ước "con của PID 2" chưa hoàn tất. Như HighKing chỉ ra ở đó, tên của PID 2 cũng chưa ổn định hoàn toàn đến kthreadd2.6,18. Nếu bạn quan tâm đến chi tiết chính xác, hãy truy cập kernel.org và sử dụng giao diện trình duyệt git để đi sâu vào lịch sử ban đầu của kernel/kthread.ctệp.
telcoM

4

Chủ đề hạt nhân hoàn toàn không sử dụng RAM (hoặc ít nhất là được hiển thị không sử dụng bất kỳ):

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

1

Nếu bạn đã tunacài đặt, bạn có thể liệt kê tất cả các luồng nhân như thế này:

$ 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
[..]
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.