Trabalhar com um processo Linux geralmente significa conhecer seu ID de processo ou PID. É um número exclusivo fornecido a cada software em execução. Aqui estão duas maneiras de descobrir o que é.
O que é um ID do processo Linux?
Como obter um PID Linux com o comando pidof
Como encontrar PIDs com o comando PGREP no Linux
O que é um ID do processo Linux?
Internamente, o Linux acompanha seu processo de execução, alocando -lhes um número de identificação exclusivo, chamado ID do processo ou PID. Todo aplicativo, utilidade e daemon em execução têm um PID.
PIDs são valores inteiros simples. Um processo recém-iniciado receberá um PID mais alto que o último PID emitido. Portanto, o processo com o PID mais alto é o mais novo - ou seja, mais recentemente - o processo lançado. Isso continua até que o sistema atinja o valor máximo para um PID.
O limite superior para um PID é 32768. Quando esse número é atingido, o Linux remonta ao início e procura um PID que se tornou livre porque o processo que possuía anteriormente foi terminado.
O processo com um PID de 1 é o primeiro processo lançado quando o Linux é lançado pelos processos de inicialização. Em sistemas baseados em Systemd que serão
Systemd
. Em outros sistemas, é provável que seja
iniciar
, embora algumas distribuições Linux usem alternativas como
Openrc
ou
S6
.
Às vezes, é útil descobrir o PID de um processo, geralmente porque você deseja executar alguma ação nesse processo. Aqui estão dois métodos diferentes para encontrar o PID de um processo quando você conhece o nome do processo.
RELACIONADO: O que são PIDs Unix e como eles funcionam?
Como obter um PID Linux com o comando pidof
O
pidof
O comando pode ser considerado como a combinação de "PID" e "de". É como perguntar qual é o PID desse processo? Se usarmos o comando sem parâmetros, ele não faz nada. Ele o retorna silenciosamente ao prompt de comando. Precisamos especificar um nome de processo.
pidof
nos diz que o pid do shell bash é 8304. Podemos verificar isso com o
ps
comando. Tudo o que precisamos fazer é ligar
ps
sem parâmetros. Ele relatará os processos que estão em execução na sessão atual.
Porque
ps
Relatórios sobre todos os processos que ele pode encontrar, que incluirão a si mesmos, ele nos diz que há um
Bash
processo e a
ps
processo de execução. Como esperávamos, o
Bash
processo tem o mesmo pid que
pidof
relatado em.
Se você tem mais de uma janela do terminal aberta,
pidof
vai relatar sobre todos eles.
Observe que os PIDs estão listados do mais alto para o mais baixo ou, em outras palavras, do mais recente ao mais antigo.
O que isso não mostra é que você pode não ser o proprietário de todos esses processos.
pidof
Encontra todos os processos com nomes correspondentes, independentemente de quem os possui. Vamos olhar mais profundamente, canalizando a saída para
grep
. Estamos usando o
-e
(selecione todos os processos) e o
-f
(listagem completa) Opções com
ps
.
Dois dos processos Bash pertencem ao usuário Dave, o terceiro pertence ao usuário Mary.
Às vezes, um aplicativo gera muitos processos, cada um dos quais recebe seu próprio PID. É isso que obtemos com o Google Chrome.
Por padrão,
pidof
relatórios sobre todos os processos. Se quisermos, podemos pedir apenas o mais recente desses processos. O
-s
(Opção de tiro único) faz exatamente isso.
Para usar o
matar
comando para
matar manualmente
todos os
cromada
Os processos seriam tediosos. Se capturarmos a lista de processos em uma variável, podemos passar essa variável para o
matar
comando. O
matar
O comando pode aceitar vários PIDs em seu comando, por isso aceita alegremente nossa entrada e mata todos os processos para nós.
O primeiro comando coleta a saída de
pidof
e atribui à nossa variável, que estamos nomeando
pid
. Não precisamos
eco
Na tela, estamos apenas fazendo isso para mostrar o que nossa variável vale.
Passamos a variável para o
matar
comando, então use
pidof
Mais uma vez para verificar se permanecem algum processo de Chrome. Todos eles foram mortos.
Uma peculiaridade de
pidof
é que não retornará o pid de um script de shell. Ele retorna o pid do
Bash
Shell que está executando o script. Para ver a concha que está executando um script, precisamos usar o
-x
(scripts) opção.
pidof
Retorna o pid de uma casca de festa, e
ps
mostra -nos que há duas conchas em execução. Um é a concha que executa o
pidof
Comando, e o outro é o shell executando o script.
Como encontrar PIDs com o comando PGREP no Linux
O
PGREP
O comando funciona um pouco como
pidof
na obtenção de IDs de processo no Linux. No entanto, isso não encontra apenas processos que correspondam exatamente à pista de pesquisa, também retorna os PIDs de qualquer processo cujo nome
contém
o texto da pesquisa.
Aqui está um exemplo em um computador que tem o Firefox em execução.
Todos esses comandos encontram o processo do Firefox e retornam o PID. Mas se você entrou no comando:
Por conta própria, como você saberia se o PGREP havia encontrado FI refO x e não, digamos, um Dameon chamado P Refor md?
Se você adicionar o
-eu
(Nome da lista) Opção, o PGREP listará o nome do processo ao lado do PID.
Se houver várias instâncias de um processo de correspondência, elas estarão listadas.
Observe que eles estão listados em ordem crescente, que é a ordem oposta à saída de
pidof
. Eles estão listados do processo mais antigo ao processo mais novo. Como vimos com
pidof
, nem todos os processos listados necessariamente pertencem a você.
O
-você
(ID do usuário) A opção permite pesquisar processos que correspondam ao texto da pesquisa e pertencem ao nomeado
do utilizador
.
Desta vez, vemos três processos de bash nos resultados. O outro está sendo usado por
Mary
.
E podemos pedir para ver todos os processos para um usuário específico.
Para ver a linha de comando completa, use o
-a
(Lista completa) opção.
Uma palavra sobre a propriedade do PID
Nem todos os processos do sistema são de propriedade de o usuário raiz . Muitos são, é claro, mas não todos eles. Por exemplo, este comando funciona:
Falha porque
raiz
não possui esse processo. O proprietário real é um usuário do sistema chamado "Avahi". Usando o nome de usuário correto, o comando funciona.