GNU/Linux >> Tutoriales Linux >  >> Linux

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 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. La siguiente es 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 le darán una buena idea de cómo funciona el comando pgrep.

P1. ¿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

P3. ¿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 comando -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 el siguiente es el resultado 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

P4. ¿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 ello, utilice la opción de línea de comando -l.

He aquí 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 sea 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.

He aquí 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 página de manual de la herramienta para obtener más información al respecto.


Linux
  1. Tutorial de comando cd de Linux para principiantes (8 ejemplos)

  2. Tutorial de comandos de comunicación de Linux para principiantes (5 ejemplos)

  3. Tutorial de comando Linux df para principiantes (8 ejemplos)

  4. Tutorial de comando de fecha de Linux para principiantes (8 ejemplos)

  5. Tutorial de comando de nombre de host de Linux para principiantes (5 ejemplos)

Linux who Command Tutorial para principiantes (8 ejemplos)

Tutorial de comandos Linux nl para principiantes (7 ejemplos)

Tutorial de comandos de Linux nm para principiantes (10 ejemplos)

Tutorial de comandos OD de Linux para principiantes (6 ejemplos)

Tutorial de comando Linux w para principiantes (5 ejemplos)

Tutorial de comandos ss de Linux para principiantes (8 ejemplos)