
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 é.
Índice
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









