Categories: Tecnologia

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

Laptop Linux mostrando um prompt do bashLaptop 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

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:

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.

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

festa pidof

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

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

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

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

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

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.

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

pgrep firefox

fogo pgrep

raposa pgrep

refo pgrep

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

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

pgrep bash

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

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

pgrep bash -u mary

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

pgrep bash -u dave, mary -l

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

pgrep -u dave -l

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

pgrep -u dave -a

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.

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

maisroot

Recent Posts

O novo aplicativo “PC Manager” da Microsoft se parece muito com o CCleaner

Muitos aplicativos de limpeza estão disponíveis para Windows ao longo dos anos, mas hoje em…

2 anos ago

Como reiniciar um PS4

Seu PlayStation 4 está congelado? Seus jogos favoritos continuam travando? Reiniciar seu PS4 pode resolver…

2 anos ago

Veja por que as reticências são tão assustadoras ao enviar mensagens de texto…

A popularidade das mensagens de texto significou aprender uma forma totalmente nova de comunicação. Você…

2 anos ago

O telescópio James Webb acaba de capturar os “Pilares da Criação”

A foto dos "Pilares da Criação" tirada pelo Telescópio Espacial Hubble é uma das fotos…

2 anos ago

Você poderá baixar o Proton Drive mais cedo do que pensa

O Proton Drive saiu de seu estágio beta há algumas semanas, mas o aplicativo real…

2 anos ago

Como aumentar o zoom no Photoshop

Para ver suas fotos mais de perto ou para uma edição precisa , você pode…

2 anos ago