Linux: é possível ver apenas threads / processos no espaço do kernel?

25

Eu sei que existem dois "níveis" de programas: Espaço do usuário e espaço do kernel.

A minha pergunta é: Eu quero ver apenas programas do kernel, ou melhor: programas no espaço do kernel.

Esta abordagem está correta?

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]
....
    
por elbarna 15.12.2017 / 23:23

2 respostas

40

Processos do kernel (ou "threads do kernel") são filhos do PID 2 ( kthreadd ), então isso pode ser mais preciso:

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

Adicione --deselect para inverter a seleção e ver apenas os processos do espaço do usuário.

(Esta questão era basicamente um inverso exato de este .

Em 2.4 * e em kernels mais antigos, esta convenção do PID 2 ainda não existia.

    
por 16.12.2017 / 00:29
4

Os encadeamentos do kernel não usam RAM (ou pelo menos são exibidos para não usar nenhum):

ps -eo cmd,vsize,rss | grep -E ' 0 +0$'
    
por 16.12.2017 / 00:32