Como encontrar processos ainda em execução em um terminal?

9

Quando tento fechar uma guia no Terminal do Gnome, ele diz:

  

Fecha este terminal? Ainda há um processo em execução neste terminal. Fechar o terminal irá matá-lo.

Como posso descobrir o que ainda está em execução? Observe que não há nada na saída de jobs . Obrigado.

    
por Tim 14.05.2016 / 16:48

4 respostas

10

ps T

Seleciona todos os processos associados ao terminal.

    
por tmcp 05.08.2016 / 20:50
2

Se você iniciou algum processo no terminal (por exemplo, gedit) do que o ID do processo (PID) (do bash) e o Parent Process ID (PPID) (do gedit) para esses dois processos serão os mesmos. Isso pode ser visto na saída de

ps -ef
comando

. Para torná-lo mais legível, vamos primeiro "canalizar" a saída para grep para encontrar o PID de todos os processos "bash" em execução no momento e de "canalizar" novamente para awk . O awk seleciona apenas os campos PID e nome do processo (campos 2 e 8) e os envia para a tela.

ps -ef | grep bash | awk '{print ": " }'

O número na saída é PID. Você vai usá-lo para encontrar o processo que foi iniciado no terminal que tem esse PID. Note que pode haver mais de uma linha de saída se você tiver mais de um terminal aberto. Agora, para encontrar os processos "filho" (se houver) das sessões de terminal, podemos usar este comando:

ps -ef | awk '{if ( == EnterPID) print ": " ;}'

Você deve inserir o número PID no lugar de EnterPID no último comando. Se houver mais de um PID para "bash", você deve testá-los todos.

O último comando apenas procura a saída de ps -ef e pesquisa se o PID (que você encontrou no comando anterior) e o PPID são os mesmos para qualquer processo.

Mais informações:

man ps

homem awk

    
por NonStandardModel 14.05.2016 / 20:11
1

Você pode ter um pico nos processos que listam o PID do seu shell como pai. Como você pode ou não saber, podemos especificar ps format

SHELLPID=$$ ; ps -e  -o cmd,pid,ppid | awk -v shell=$SHELLPID  '$NF~shell'   

Aqui, obtemos o PID do shell da variável especial $$ em SHELLPID , que pode ser usado pelo awk no subshell do pipe. Essencialmente, estamos apenas listando processos no formulário NAME, PID, PID principal e filtrando apenas aqueles que têm o PID apropriado na última coluna.

    
por Sergiy Kolodyazhnyy 14.05.2016 / 22:06
-1

Acho que você pode usar ps -ax .

Você também pode usar top . Se necessário, consulte man top . E quando você quiser voltar, use ctrl+c .

    
por yo_KKG 13.10.2017 / 04:41