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

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

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, te alegrará saber que existe una herramienta de línea de comandos: pgrep Рque te 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 probaron 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 de manual de la herramienta:

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á el resultado que produjo este comando en mi caso:

Q2. ¬ŅC√≥mo hacer que pgrep print 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 n√ļmero 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 el siguiente es el resultado 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á el resultado 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 comando que hemos discutido aqu√≠, puede dirigirse a la herramienta p√°gina man para aprender m√°s al respecto.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *