Quando tento fechar uma guia no Gnome Terminal, ele diz:
Fechar este terminal? Ainda existe 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.
screen
,tmux
,script
,ssh
,mc
e virou os painéis off, ou apenas um outro shell por exemplo digitaçãobash
, ou algo nesse sentido. Pressione Ctrl + D ou digiteexit
para sair do seu shell, você verá onde termina.exit
, a guia terminal do gnome não fecha.exit
provavelmente irá fechá-lo então. @egmont, você pode passar isso para uma resposta, por favor.Respostas:
Seleciona todos os processos associados ao terminal.
fonte
nohup
comando são desconectados do terminal, portanto, não bloqueie seu fechamento. Mas eles ainda estão listados com este comando.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 o
ps
formatoAqui, temos PID do shell de variável especial
$$
emSHELLPID
que, em seguida, pode ser usado por awk em subnível do tubo. Basicamente, estamos apenas listando processos no formulário NAME, PID, PID pai e filtrando apenas aqueles que possuem o PID apropriado na última coluna.fonte
Se você iniciou algum processo no terminal (por exemplo, gedit), o ID do processo (PID) (do bash) e o ID do processo pai (PPID) (do gedit) para esses dois processos serão os mesmos. Isso pode ser visto na saída de
comando. Para torná-lo mais legível, vamos primeiro "canalizar" a saída para
grep
encontrar o PID de todos os processos "bash" em execução no momento e depois "canalizar" novamente paraawk
. Eleawk
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 $2 ": " $8}'
O número na saída é PID. Você o usará para descobrir qual processo foi iniciado no terminal que possui esse PID. Observe que pode haver mais de uma linha de saída se você tiver mais de um terminal aberto. Agora, para encontrar os processos "filhos" (se houver) dessas sessões de terminal, podemos usar este comando:
ps -ef | awk '{if ($3 == EnterPID) print $2 ": " $8;}'
Você deve inserir o número do PID no lugar de EnterPID no último comando. Se houver mais de um PID para "bash", você deve tentar todos eles.
O último comando apenas procura a saída
ps -ef
e pesquisa se o PID (que você encontrou no comando anterior) e o PPID são iguais para qualquer processo.Mais informações:
homem ps
homem awk
fonte
Você pode usar
htop
. No Ubuntu 16.04 (e superior), você pode instalá-lo apenas digitandosudo apt-get install htop
.Você também pode usar
top
.fonte
htop
?