Existe alguma maneira de esconder os threads do kernel dos resultados do comando ps? [duplicado]

3

Quando digito ps -ef , há muitos processos especiais de encadeamentos do kernel mostrando.

Eu não estou interessado em tópicos do kernel; Estou interessado apenas no processo / thread do usuário.

Existe alguma maneira de ocultar os tópicos do kernel?

    
por lovespring 29.01.2016 / 04:33

2 respostas

5
A saída

ps pode ser filtrada de várias formas. Para ver seus processos, você poderia filtrar pelo usuário / uid. página de manual relevante abaixo -

   U userlist      Select by effective user ID (EUID) or name.
                   This selects the processes whose effective user name or ID is in userlist. The effective user ID describes the user
                   whose file access permissions are used by the process (see geteuid(2)). Identical to -u and --user.

   -U userlist     Select by real user ID (RUID) or name.
                   It selects the processes whose real user name or ID is in the userlist list. The real user ID identifies the user
                   who created the process, see getuid(2).

   -u userlist     Select by effective user ID (EUID) or name.
                   This selects the processes whose effective user name or ID is in userlist. The effective user ID describes the user
                   whose file access permissions are used by the process (see geteuid(2)). Identical to U and --user.

Para identificar threads do kernel vs usuário, pode depender da versão do kernel. Na minha máquina Ubuntu (3.5.0-30-generic), posso excluir threads do kernel excluindo filhos do kthreadd (pid = 2). O pid de kthreadd pode diferir em kernels 2.6 - no entanto, você poderia apenas usar o pid relevante. Como exemplo, para obter uma lista de todos os processos que não têm ppid = 2, eu faço (para opções para alimentar a -o, verifique a man page) -

 ps -o pid,ppid,comm,flags,%cpu,sz,%mem  --ppid 2 -N

Você também pode filtrar usando grep ou awk. A outra maneira (não usar ps) para identificar threads do kernel é verificar se / proc // maps ou / proc / cmdline está vazio - ambos estão vazios para threads do kernel. Você precisará de privilégios de root para fazer isso.

    
por 29.01.2016 / 05:43
2

Eu filtro a saída com awk , usando o fato de o pid 2 ser o pai de todos os threads do kernel:

ps -fHuroot | awk '$3!=2'

Isto imprime apenas linhas onde o terceiro campo (PPID) não é 2 .

    
por 29.01.2016 / 13:21