Como encontrar o processo de dormir no Ubuntu?

7

Existe alguma maneira de encontrar processos para dormir no Ubuntu?

Eu posso ver top pode listar o número de processos adormecidos, mas quero que eles sejam listados com o nome deles.

Existe algum comando para isso?

    
por Ant's 15.09.2012 / 16:22

4 respostas

4

Tente isto:

ps o state,command axh | grep "^[SD]" | cut -b 3-

para listar comandos de processos com um estado de suspensão interrompível e ininterrupto.

  • ps emitindo apenas estado e comandos de todos os processos ( ax ) e h remove a linha de cabeçalho.
  • grep filtra processos diferentes dos dois estados de suspensão
  • cut é usado para remover a saída de estado novamente.
  • Opcionalmente, substitua command por ucmd se você não precisar do nome completo, incluindo todos os argumentos.

Isso provavelmente é um script abaixo do ideal aqui, mas não consegui encontrar uma maneira rápida de ter ps filtrado para um estado específico.

    
por gertvdijk 15.09.2012 / 16:42
1

Você pode pegar as informações de cima, que podem ser executadas no modo de lote ( -b ).

top -bn1 | awk 'NR > 7 &&  ~ /S|D/ { print  }'
  • -n1 top é executado apenas uma vez e sai.
  • NR > 7 ignora o cabeçalho.
  • ~ /S|D/ seleciona programas que estão no estado D ou S .

Os estados possíveis são de top(1) :

      'D' = uninterruptible sleep
      'R' = running
      'S' = sleeping
      'T' = traced or stopped
      'Z' = zombie
    
por Thor 15.09.2012 / 17:22
0
ps -e S 

mostrará os processos para dormir.

    
por user2327875 20.10.2013 / 10:08
0

Usando awk e ps

ps o pid,state,command | \
    awk ' {if ( == "T") {printf "%s\t%s\t%s\n","Sleeping",,};}'

Exemplo

Inicie o mc em um terminal, abra um novo terminal e inicie os comandos abaixo

kill -STOP $(pgrep mc)
ps o pid,state,command | \
    awk ' {if ( == "T") {printf "%s\t%s\t%s\n","Sleeping",,};}'

A saída é

Sleeping    21668   mc
    
por A.B. 08.08.2015 / 15:02