Como encontrar o PID de um processo Linux com pidof ou pgrep

Laptop Linux mostrando um prompt do bash

Trabalhar com um processo Linux geralmente significa conhecer seu ID de processo, ou PID. É um número exclusivo atribuído a cada software em execução. Aqui estão duas maneiras de descobrir o que é.

O que é um ID de processo Linux?

Internamente, o Linux monitora seu processo em execução, alocando-lhes um número de ID exclusivo, chamado ID do processo ou PID. Cada aplicativo, utilitário e daemon em execução possui um PID.

PIDs são valores inteiros simples. Um processo recém-iniciado receberá um PID superior ao último PID emitido. Portanto, o processo com o PID mais alto é o mais novo, ou seja, o processo lançado mais recentemente. Isso continua até que o sistema atinja o valor máximo para um PID.

O limite superior para um PID é 32768. Uma vez atingido esse valor, o Linux volta ao início e procura um PID que se tornou livre porque o processo que o possuía anteriormente foi encerrado.

O processo com PID 1 é o primeiro processo iniciado quando o Linux é iniciado pelos processos de inicialização. Em sistemas baseados em systemd, isso será

 systemd 

. Em outros sistemas é provável que seja

 init 

, 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ê sabe o nome do processo.

Como obter um PID do Linux com o comando pidof

O pidofcomando pode ser pensado como a combinação de “PID” e “of”. É como perguntar qual é o PID desse processo? Se usarmos o comando sem parâmetros ele não fará nada. Ele silenciosamente retorna você ao prompt de comando. Precisamos especificar um nome de processo.

festa pidof

Encontrando o PID de um shell bash com o comando pidof

pidofnos diz que o PID do shell Bash é 8304. Podemos verificar isso com o pscomando. Tudo o que precisamos fazer é chamar pssem parâmetros. Ele reportará sobre os processos que estão em execução na sessão atual.

obs:

listando processos com o comando ps

Porque psos relatórios sobre todos os processos que pode encontrar, que se incluirão, nos dizem que há um bashprocesso e um psprocesso em execução. Como seria de esperar, o bashprocesso tem o mesmo PID pidofrelatado.

Recomendado:  Como sincronizar sua biblioteca Kodi em vários dispositivos com MySQL

Se você tiver mais de uma janela de terminal aberta, pidofirá reportar todas elas.

festa pidof

relatórios pidof sobre várias instâncias de processos correspondentes

Observe que os PIDs são listados do maior para o menor ou, em outras palavras, do mais recente para o mais antigo.

O que isso não mostra é que você pode não ser o proprietário de todos esses processos. pidofencontra todos os processos com nomes correspondentes, independentemente de quem os possui. Vamos olhar mais profundamente canalizando a saída para grep. Estamos usando as opções -e(selecionar todos os processos) e -f(listagem completa) com ps.

ps -ef | grep bash

Usando ps e grep para identificar os proprietários de processos bash

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 recebendo seu próprio PID. Isso é o que obtemos com o Google Chrome.

pidof cromo

pidof encontrando muitos PIDs para um único aplicativo com muitos processos

Por padrão, pidofrelatórios sobre todos os processos. Se quisermos, podemos solicitar apenas o mais recente desses processos. A -sopção (tiro único) faz exatamente isso.

pidof -s cromo

Encontrando o PID mais recente de n aplicativos com vários PIDs

Usar o killcomando para eliminar manualmente todos os chromeprocessos seria entediante. Se capturarmos a lista de processos em uma variável, podemos passar essa variável para o killcomando. O killcomando pode aceitar vários PIDs em seu comando, portanto aceita alegremente nossa entrada e mata todos os processos para nós.

pid=$(pidof cromo)

eco $pid

matar $pid

pidof cromo

Passando uma variável contendo muitos PIDs para o comando kill

O primeiro comando coleta a saída pidofe a atribui à nossa variável, que estamos nomeando pid. Não precisamos mostrar echoisso na tela, estamos apenas fazendo isso para mostrar o que nossa variável contém.

Passamos a variável para o killcomando e usamos pidofmais uma vez para verificar se resta algum processo do Chrome. Todos eles foram mortos.

Uma peculiaridade pidofé que ele não retornará o PID de um script de shell. Ele retorna o PID do bashshell que está executando o script. Para ver o shell que está executando um script, precisamos usar a -xopção (scripts).

pidof -x sleep-loop.sh

ps -e | grep bash

Encontrando o PID de um shell bash executando um script de shell

pidofretorna o PID de um shell bash e psmostra que há dois shells em execução. Um é o shell que executa o pidofcomando e o outro é o shell que executa o script.

Como encontrar PIDs com o comando pgrep no Linux

O pgrepcomando funciona um pouco como pidof obter IDs de processos no Linux. No entanto, ele não apenas encontra processos que correspondem exatamente à pista de pesquisa, mas também retorna os PIDs de quaisquer processos cujo nome contenha o texto de pesquisa.

Recomendado:  Como controlar seu Kodi Media Center com um Amazon Echo

Aqui está um exemplo em um computador com o Firefox em execução.

pgrep firefox

fogo pgrep

raposa pgrep

refo pgrep

Encontrando o PID do Firefox usando diferentes pistas de pesquisa

Todos esses comandos encontram o processo do Firefox e retornam o PID. Mas se você digitou o comando:

refo pgrep

Por si só, como você saberia se o pgrep encontrou o Fi refo x e não, digamos, um dameon chamado p refor md?

Se você adicionar a -lopção (nome da lista), o pgrep listará o nome do processo junto com o PID.

pgrep refo -l

Encontrando o PID de um shell bash com o comando pidof

Se houver diversas instâncias de um processo correspondente, todas elas serão listadas.

pgrep bash

Encontrando o PID de um shell bash com o comando pidof

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 mais recente. Como vimos pidof, nem todos os processos listados pertencem necessariamente a você.

A -uopção (id do usuário) permite pesquisar processos que correspondam ao texto de pesquisa e sejam de propriedade do usuário nomeado .

pgrep bash -u dave

Encontrando o PID de um shell bash com o comando pidof

Desta vez vemos três processos bash nos resultados. O outro está sendo usado por mary.

pgrep bash -u mary

Encontrando o PID de um shell bash com o comando pidof

Podemos agrupar nomes de usuários como uma lista separada por vírgulas.

pgrep bash -u dave, mary -l

Encontrando o PID de um shell bash com o comando pidof

E podemos pedir para ver todos os processos de um usuário específico.

pgrep -u dave -l

Encontrando o PID de um shell bash com o comando pidof

Para ver a linha de comando completa, use a -aopção (lista completa).

pgrep -u dave -a

Encontrando o PID de um shell bash com o comando pidof

Uma palavra sobre propriedade do PID

Nem todos os processos do sistema pertencem ao usuário root . Muitos são, é claro, mas não todos. Por exemplo, este comando funciona:

pgrep avahi-daemon

Mas este comando falha.

pgrep -u root avahi-daemon

Ele falha porque root não possui esse processo. O verdadeiro proprietário é um usuário do sistema chamado “avahi”. Usando o nome de usuário correto, o comando funciona.

Recomendado:  O Google está inativo? Veja como verificar (e corrigi-lo)

pgrep -u avahi avahi-daemon

É uma pequena pegadinha a ser observada.

Comandos Linux

arquivos

tar · pv ·  cat · tac · chmod  · grep ·  diff ·  sed · ar ·  man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · cauda · estatística · ls · fstab · echo · menos · chgrp · chown · rev · olhar · strings · digitar · renomear · zip · descompactar · montar · desmontar · instalar · fdisk · mkfs  · rm · rmdir  · rsync  · df  · gpg  · vi  · nano  · mkdir  · du  · ln  · patch  · converter  · rclone · fragmentar · srm  · scp  · gzip · chattr  · cortar  · encontrar  · umask  · wc  ·  tr

Processos

alias  · tela ·  topo ·  legal · renice ·  progresso · strace · systemd · tmux · chsh · histórico · em · lote · grátis · which · dmesg · chfn · usermod · ps ·  chroot · xargs · tty · mindinho · lsof · vmstat · tempo limite · parede · sim · matar · dormir · sudo · su · tempo  · groupadd · usermod  · grupos  · lshw  · desligar · reiniciar · parar · desligar  · senha  · lscpu  · crontab  · data  · bg  · fg  · pidof  · nohup  · pmap

Rede

netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · cavar · dedo · nmap · ftp ·  curl ·  wget  · quem · whoami · w  · iptables  · ssh-keygen  ·  ufw  · arping  · firewalld

RELACIONADO:  Melhores laptops Linux para desenvolvedores e entusiastas