Listar apenas processos que estão no modo suspenso

5

para listar os processos em execução em segundo plano, pode-se digitar: ps -ef ou ps -aux

mas como listar processos que estão suspensos, digamos que eu tenha algum processo em primeiro plano e apenas suspenso (com bg <jobid> ou Ctrl+z )

como posso saber quais são os processos nesse status (suspensos)?

obrigado

    
por Algina 27.03.2017 / 14:13

2 respostas

5

Você pode usar o bash jobs incorporado para ver o status de trabalhos em segundo plano ou suspensos, por exemplo,

  • iniciar e colocar em segundo plano um processo; inicie e suspenda um segundo com Ctrl + Z

    $ sleep 100 & sleep 200
    [1] 12444
    ^Z
    [2]+  Stopped                 sleep 200
    
  • verifique o status de todos os trabalhos

    $ jobs
    [1]-  Running                 sleep 100 &
    [2]+  Stopped                 sleep 200
    
  • verifique o status apenas dos trabalhos suspensos

    $ jobs -s
    [2]+  Stopped                 sleep 200
    

Consulte a seção JOB CONTROL de man bash ou a ajuda on-line do shell help jobs .

    
por steeldriver 27.03.2017 / 14:51
4

A saída de ps inclui o status:

$ ps aux | head -n2
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0 200892  5132 ?        Ss   Mar04   0:20 /sbin/init

A coluna STAT é o estado do processo. Isso pode ser um dos (de man ps ):

Here are the different values that the s, stat and state output
specifiers (header "STAT" or "S") will display to describe the state of a process:

           D    uninterruptible sleep (usually IO)
           R    running or runnable (on run queue)
           S    interruptible sleep (waiting for an event to complete)
           T    stopped by job control signal
           t    stopped by debugger during the tracing
           W    paging (not valid since the 2.6.xx kernel)
           X    dead (should never be seen)
           Z    defunct ("zombie") process, terminated but not reaped by its parent

Você está procurando processos cujo estado é mostrado como T . Para ver apenas esses processos, você pode analisar a saída ps para eles:

ps aux | awk '=="T"'

Às vezes, caracteres adicionais podem ser adicionados ao campo de estado (dependendo das opções que você usa), portanto, essa pode ser uma abordagem mais segura:

ps aux | awk '~/T/'
    
por terdon 27.03.2017 / 14:43