Búsqueda de sitios web

Tutorial del comando pgrep de Linux para principiantes (10 ejemplos)


En esta página

  1. Comando pgrep de Linux
  2. P1. ¿Cómo encontrar el ID de un proceso propiedad de un usuario específico?
  3. P2. ¿Cómo hacer que la impresión pgrep cuente los procesos coincidentes?
  4. P3. ¿Cómo usar un delimitador personalizado en la salida?
  5. P4. ¿Cómo hacer que la búsqueda de pgrep no distinga entre mayúsculas y minúsculas?
  6. P5. ¿Cómo hacer que los nombres de los procesos de la lista pgrep también?
  7. P6. ¿Cómo hacer que la lista pgrep también tenga un comando completo?
  8. P7. ¿Cómo hacer que pgrep solo muestre el proceso más nuevo?
  9. P8. ¿Cómo hacer que pgrep solo muestre el proceso más antiguo?
  10. Conclusión

Es posible que ya conozca el comando grep en Linux, que busca un patrón y luego imprime el texto correspondiente en la salida. ¿Qué sucede si el requisito es aplicar este tipo de procesamiento para obtener información seleccionada sobre los procesos que se ejecutan actualmente en el sistema?

Bueno, le alegrará saber que existe una herramienta de línea de comandos, pgrep, que le permite hacer exactamente esto. En este tutorial, discutiremos los conceptos básicos de pgrep utilizando algunos ejemplos fáciles de entender. Pero antes de hacerlo, vale la pena mencionar que todos los ejemplos aquí se han probado en una máquina con Ubuntu 20.04 LTS y en Debian 10.

Comando pgrep de Linux

El comando pgrep en Linux permite a los usuarios buscar procesos en función del nombre y otros atributos. A continuación se muestra su sintaxis:

pgrep [options] pattern

Y así es como lo explica la página del manual de herramientas:

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.

Los siguientes son algunos ejemplos de estilo de preguntas y respuestas que deberían darle una buena idea de cómo funciona el comando pgrep.

Q1. ¿Cómo encontrar el ID de un proceso propiedad de un usuario específico?

Esto se puede hacer usando la opción de línea de comando -u. Por ejemplo, para encontrar el ID del proceso gedit propiedad del usuario himanshu, use pgrep de la siguiente manera:

pgrep -u himanshu gedit

Aquí está la salida que este comando produjo en mi caso:

Q2. ¿Cómo hacer que la impresión pgrep cuente los procesos coincidentes?

En caso de que desee que la herramienta solo imprima el recuento y no los ID en sí, utilice la opción de línea de comandos -c. Por ejemplo, para conocer el recuento de procesos propiedad del usuario himanshu, ejecute el siguiente comando:

pgrep -c -u himanshu

El siguiente es el resultado que este comando produjo en mi sistema:

83

Q3. ¿Cómo usar un delimitador personalizado en la salida?

De forma predeterminada, los ID de proceso en la salida están delimitados por una nueva línea. Sin embargo, si lo desea, puede cambiar el delimitador, algo que puede hacer con la opción de línea de comandos -d.

Por ejemplo, quería usar dos puntos (:) como delimitador, así que ejecuté el comando pgrep de la siguiente manera:

pgrep -u himanshu -d:

Y la siguiente es la salida que produjo el comando:

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. ¿Cómo hacer que la búsqueda de pgrep no distinga entre mayúsculas y minúsculas?

De forma predeterminada, la búsqueda de pgrep distingue entre mayúsculas y minúsculas. Sin embargo, si lo desea, puede hacer que no distinga entre mayúsculas y minúsculas. Para esto, debe usar la opción de línea de comando -i.

Por ejemplo:

pgrep -i gedit

P5. ¿Cómo hacer que los nombres de los procesos de la lista pgrep también?

Para esto, use la opción de línea de comando -l.

Aquí hay un ejemplo:

pgrep -u himanshu -l

Aquí hay un extracto de la salida producida en mi 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
...
...
...

Entonces puede ver que, además de los ID de proceso, también se generaron nombres de proceso en la salida.

P6. ¿Cómo hacer que la lista pgrep también tenga un comando completo?

En caso de que desee que pgrep muestre el comando completo que se usó para iniciar cada proceso, use la opción de línea 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

P7. ¿Cómo hacer que pgrep solo muestre el proceso más nuevo?

Si en lugar de todos los procesos, desea que pgrep genere solo el proceso más reciente, esto se puede hacer usando la opción de línea de comando -n.

Aquí hay un ejemplo:

pgrep -u himanshu -n -l

Y la siguiente es la salida que produjo este comando:

7163 thunderbird

Puedo confirmar que Thunderbird fue, de hecho, el proceso más reciente iniciado por el usuario himanshu.

P8. ¿Cómo hacer que pgrep solo muestre el proceso más antiguo?

Para ello, utilice la opción de línea de comandos -o.

pgrep -u himanshu -o -l

Y aquí está la salida que produjo este comando:

1793 systemd

Conclusión

Entonces puede ver que pgrep es un comando extremadamente útil. Una vez que haya terminado de practicar la opción de línea de comandos que hemos discutido aquí, puede dirigirse a la página del manual de herramientas para obtener más información al respecto.