Pesquisa de site

Tutorial de comando Linux pgrep para iniciantes (10 exemplos)


Nesta página

  1. Comando Linux pgrep
  2. T1. Como encontrar o ID de um processo pertencente a um usuário específico?
  3. T2. Como fazer o pgrep imprimir contagem de processos correspondentes?
  4. T3. Como usar um delimitador personalizado na saída?
  5. Quarto trimestre. Como tornar a pesquisa do pgrep insensível?
  6. Q5. Como fazer nomes de processo de lista pgrep também?
  7. Q6. Como tornar o comando completo da lista pgrep também?
  8. Q7. Como fazer o pgrep exibir apenas o processo mais recente?
  9. Q8. Como fazer o pgrep exibir apenas o processo mais antigo?
  10. Conclusão

Talvez você já conheça o comando grep no Linux, que procura um padrão e imprime o texto correspondente na saída. E se o requisito for aplicar esse tipo de processamento para buscar informações selecionadas sobre os processos em execução no sistema?

Bem, você ficará feliz em saber que existe uma ferramenta de linha de comando - pgrep - que permite fazer exatamente isso. Neste tutorial, discutiremos os fundamentos do pgrep usando alguns exemplos fáceis de entender. Mas antes disso, vale mencionar que todos os exemplos aqui foram testados em uma máquina Ubuntu 20.04 LTS e no Debian 10.

Comando Linux pgrep

O comando pgrep no Linux permite que os usuários procurem processos com base no nome e em outros atributos. Segue sua sintaxe:

pgrep [options] pattern

E aqui está como a página de manual das ferramentas explica isso:

pgrep looks through the currently running processes and lists the process IDs which match the 
selection criteria to stdout. All the criteria have to match.

A seguir estão alguns exemplos de perguntas e respostas que devem dar uma boa ideia de como o comando pgrep funciona.

Q1. Como encontrar o ID de um processo pertencente a um usuário específico?

Isso pode ser feito usando a opção de linha de comando -u. Por exemplo, para encontrar o ID do processo gedit pertencente ao usuário himanshu, use pgrep da seguinte maneira:

pgrep -u himanshu gedit

Aqui está a saída que este comando produziu no meu caso:

Q2. Como fazer o pgrep imprimir contagem de processos correspondentes?

Caso você queira que a ferramenta apenas imprima a contagem, e não os próprios IDs, use a opção de linha de comando -c. Por exemplo, para saber a contagem de processos pertencentes ao usuário himanshu, execute o seguinte comando:

pgrep -c -u himanshu

A seguir está a saída que este comando produziu em meu sistema:

83

Q3. Como usar um delimitador personalizado na saída?

Por padrão, os IDs de processo na saída são delimitados por uma nova linha. No entanto, se desejar, você pode alterar o delimitador, algo que pode ser feito usando a opção de linha de comando -d.

Por exemplo, eu queria usar dois pontos (:) como delimitador, então executei o comando pgrep da seguinte maneira:

pgrep -u himanshu -d:

E a seguir está a saída que o comando produziu:

1793:1794:1807:1811:1813:1817:1820:1914:1917:1922:1925:1936:1938:1954:1974:1978:1980:1982:1993:1999
:2008:2009:2012:2020:2024:2034:2036:2043:2048:2049:2051:2052:2055:2064:2068:2073:2074:2085:2088:
2093:2094:2095:2098:2101:2104:2117:2125:2161:2162:2168:2173:2182:2201:2213:2233:2245:2266:2279:
2388:2409:2430:2456:2473:2564:2647:3085:3108:3178:3284:3297:3320:3325:3467:3487:3980:4040:4658:
5668:5721:5777:6271:6281:6512:6808

Q4. Como tornar a pesquisa do pgrep insensível?

Por padrão, a pesquisa do pgrep diferencia maiúsculas de minúsculas. No entanto, se desejar, você pode torná-lo insensível a maiúsculas e minúsculas. Para isso, você deve usar a opção de linha de comando -i.

Por exemplo:

pgrep -i gedit

Q5. Como fazer nomes de processo de lista pgrep também?

Para isso, use a opção de linha de comando -l.

Aqui está um exemplo:

pgrep -u himanshu -l

Aqui está um trecho da saída produzida no meu sistema:

1793 systemd
1794 (sd-pam)
1807 gnome-keyring-d
1811 gdm-x-session
1813 Xorg
1817 dbus-daemon
1820 gnome-session-b
1914 ssh-agent
1917 gvfsd
1922 gvfsd-fuse
1925 at-spi-bus-laun
1936 dbus-daemon
1938 at-spi2-registr
1954 gnome-shell
1974 ibus-daemon
1978 ibus-dconf
1980 ibus-x11
1982 ibus-portal
1993 gnome-shell-cal
1999 evolution-sourc
2008 dconf-service
2009 gvfs-udisks2-vo
2012 goa-daemon
2020 gvfs-mtp-volume
2024 gvfs-goa-volume
...
...
...

Assim, você pode ver que, além dos IDs de processo, os nomes de processo também foram produzidos na saída.

Q6. Como tornar o comando completo da lista pgrep também?

Caso você queira que o pgrep exiba o comando completo que foi usado para iniciar cada processo, use a opção de linha de comando -a.

pgrep -u himanshu -a
1793 /lib/systemd/systemd --user
1794 (sd-pam)
1807 /usr/bin/gnome-keyring-daemon --daemonize --login
1811 /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SHELL_SESSION_MODE=ubuntu gnome-session --session=ubuntu
1813 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
1817 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
1820 /usr/lib/gnome-session/gnome-session-binary --session=ubuntu
1914 /usr/bin/ssh-agent /usr/bin/im-launch env GNOME_SHELL_SESSION_MODE=ubuntu gnome-session --session=ubuntu
1917 /usr/lib/gvfs/gvfsd
1922 /usr/lib/gvfs/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes
1925 /usr/lib/at-spi2-core/at-spi-bus-launcher
1936 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
1938 /usr/lib/at-spi2-core/at-spi2-registryd --use-gnome-session
1954 /usr/bin/gnome-shell
1974 ibus-daemon --xim --panel disable
1978 /usr/lib/ibus/ibus-dconf
1980 /usr/lib/ibus/ibus-x11 --kill-daemon
1982 /usr/lib/ibus/ibus-portal
1993 /usr/lib/gnome-shell/gnome-shell-calendar-server
1999 /usr/lib/evolution/evolution-source-registry
2008 /usr/lib/dconf/dconf-service
2009 /usr/lib/gvfs/gvfs-udisks2-volume-monitor
2012 /usr/lib/gnome-online-accounts/goa-daemon
2020 /usr/lib/gvfs/gvfs-mtp-volume-monitor
2024 /usr/lib/gvfs/gvfs-goa-volume-monitor
2034 /usr/lib/gnome-online-accounts/goa-identity-service
2036 /usr/lib/gvfs/gvfs-gphoto2-volume-monitor
2043 /usr/lib/gvfs/gvfs-afc-volume-monitor

Q7. Como fazer o pgrep exibir apenas o processo mais recente?

Se, em vez de todos os processos, você quiser que o pgrep gere apenas o processo mais recente, isso pode ser feito usando a opção de linha de comando -n.

Aqui está um exemplo:

pgrep -u himanshu -n -l

E a seguir está a saída que este comando produziu:

7163 thunderbird

Posso confirmar que o Thunderbird foi de fato o processo mais recente lançado pelo usuário himanshu.

Q8. Como fazer o pgrep exibir apenas o processo mais antigo?

Para isso, use a opção de linha de comando -o.

pgrep -u himanshu -o -l

E aqui está a saída que este comando produziu:

1793 systemd

Conclusão

Então você pode ver que o pgrep é um comando extremamente útil. Assim que terminar de praticar a opção de linha de comando que discutimos aqui, você pode acessar a página do manual de ferramentas para saber mais sobre ela.