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 pidof
comando 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
pidof
nos diz que o PID do shell Bash é 8304. Podemos verificar isso com o ps
comando. Tudo o que precisamos fazer é chamar ps
sem parâmetros. Ele reportará sobre os processos que estão em execução na sessão atual.
obs:
Porque ps
os relatórios sobre todos os processos que pode encontrar, que se incluirão, nos dizem que há um bash
processo e um ps
processo em execução. Como seria de esperar, o bash
processo tem o mesmo PID pidof
relatado.
Se você tiver mais de uma janela de terminal aberta, pidof
irá 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. 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 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, pidof
relatórios sobre todos os processos. Se quisermos, podemos solicitar apenas o mais recente desses processos. A -s
opção (tiro único) faz exatamente isso.
pidof -s cromo
Usar o kill
comando para eliminar manualmente todos os chrome
processos seria entediante. Se capturarmos a lista de processos em uma variável, podemos passar essa variável para o kill
comando. O kill
comando 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 pidof
e a atribui à nossa variável, que estamos nomeando pid
. Não precisamos mostrar echo
isso na tela, estamos apenas fazendo isso para mostrar o que nossa variável contém.
Passamos a variável para o kill
comando e usamos pidof
mais 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 bash
shell que está executando o script. Para ver o shell que está executando um script, precisamos usar a -x
opção (scripts).
pidof -x sleep-loop.sh
ps -e | grep bash
pidof
retorna o PID de um shell bash e ps
mostra que há dois shells em execução. Um é o shell que executa o pidof
comando e o outro é o shell que executa o script.
Como encontrar PIDs com o comando pgrep no Linux
O pgrep
comando 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 -l
opçã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 -u
opçã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 -a
opçã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