Como posso encontrar o ID do processo de um comando iniciado em outro terminal?

1

Se eu executar sleep 30 em uma janela do PuTTY, como posso encontrar o ID do processo do comando sleep de outra janela do PuTTY?

    
por jay 26.05.2014 / 01:17

2 respostas

2

O comando pgrep

Se a sua distribuição tiver o comando pgrep instalado (por exemplo, do pacote procps ), você poderá usar o comando para localizar IDs de processo por padrão. Por exemplo:

# Find the sleep commands belonging to the current user.
pgrep -u $LOGNAME sleep

Este comando encontrará todas as correspondências pertencentes ao usuário atual, independentemente de o processo ter sido iniciado no terminal atual ou em outro, de modo que funcionará para seu caso de uso PuTTY.

Testando o comando pgrep

Você pode testar isso em um único TTY ou PTY simplesmente, também. Considere:

$ sleep 30 & pgrep -u $LOGNAME sleep
[1] 24021
24021

Neste exemplo, sleep é colocado em segundo plano e o Bash informa o ID do trabalho e o PID do trabalho em segundo plano. Então pgrep encontra o mesmo PID na lista de processos e envia o PID para a saída padrão. Obviamente, os números devem corresponder.

Múltiplos Jogos

Observe que, se o usuário atual tiver mais de um comando sleep em execução, o pgrep reportará corretamente vários PIDs. Por exemplo, os seguintes PIDs de retorno para trabalhos em segundo plano %1 e %2 :

$ sleep 30 & sleep 30 & pgrep -u $LOGNAME sleep
[1] 24063
[2] 24064
24063
24064
    
por 26.05.2014 / 06:36
0
ps -u "your_login" | grep "sleep" | awk '{print $1}'
    
por 26.05.2014 / 06:15

Tags