Categories: Tecnologia

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

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…

9 meses ago

Como reiniciar um PS4

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

9 meses 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ê…

9 meses 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…

9 meses 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…

9 meses ago

Como aumentar o zoom no Photoshop

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

9 meses ago