GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo hacer que pgrep muestre la información completa del proceso

Solución 1:

pgrep Las opciones de salida son bastante limitadas. Es casi seguro que tendrás que devolverlo a través de ps para sacar la información importante. Puede automatizar esto usando una función bash en su ~/.bashrc .

function ppgrep() { pgrep "[email protected]" | xargs --no-run-if-empty ps fp; }

Luego llame al comando con.

ppgrep <pattern>

Solución 2:

Combinar pgrep con ps usando xargs !

pgrep <your pgrep-criteria> | xargs ps <your ps options> -p

Por ejemplo, intente

pgrep -u user | xargs ps -f -p

para obtener una lista completa de procesos de user . Opción -u user límites pgrep al usuario dado (como un número o nombre) mientras que el ps opciones -f -p solicitar una lista de formato completo para el PID seleccionado.

Es bueno que mantenga la primera línea con los nombres de las columnas. grep siempre elimina los nombres de las columnas.

Solución 3:

Lo siguiente solo le proporciona PID + línea de comandos completa. Para "toda la información ps hace", ver otras respuestas...

La mayoría de los linux usan procps-ng. Desde 3.3.4 (lanzado en 2012), pgrep -a (--list-full ) muestra la línea de comando completa.
Nota:Por defecto, pgrep solo hace coincidir el patrón que proporciona con el nombre del ejecutable. Si desea hacer coincidir con la línea de comando completa (como lo hace grepping ps), agregue el -f (--full ) opción.

En versiones anteriores (incluido el proyecto procps original), -l la opción mostró información pero su comportamiento varió:

  • pgrep -fl comparó el patrón con la línea de comando completa y mostró la línea de comando completa.
  • pgrep -l solo coincidió solo con el nombre del ejecutable y mostró solo el nombre del ejecutable.
    Si no desea una coincidencia completa, no podrá ver la línea de comandos completa :-([https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=526355#15]

No estoy seguro de qué código usa *BSD, pero su página de manual documenta el antiguo -fl comportamiento.

Desafortunadamente, ni siquiera puedes usar -fl portablemente - en procps-ng reciente, -f (--list-name ) siempre imprime solo el nombre del ejecutable.

Solución 4:

Linux

Para la versión GNU de pgrep La salida larga + difusa se logra con -af y la cadena debe distinguir entre mayúsculas y minúsculas (es decir, no hay ninguna opción para distinguir entre mayúsculas y minúsculas ).

$ pgrep -af apache

OUTPUT:
    1748 /usr/sbin/apache2 -k start

Página man:

   -a, --list-full
       List  the  full  command line as well as the process ID.  (pgrep only.)

   -f, --full
       The pattern is normally only matched against the process name.  
       When -f is set, the full command  line is used.

MacOS

En OSX (y por inferencia, en BSD) -l (salida larga ) en combinación con -f (coincidencia con listas completas de argumentos ) mostrará el comando completo (-i agrega mayúsculas y minúsculas):

$ pgrep -fil ssh

OUTPUT:
    33770 ssh: [email protected] [mux] t

La página man:

 -l          Long output.  For pgrep, print the
             process name in addition to the
             process ID for each matching
             process.  If used in conjunction
             with -f, print the process ID and
             the full argument list for each
             matching process.  For pkill, dis-
             play the kill command used for
             each process killed.

Solución 5:

Use la opción -v para grep:devuelve todo MENOS el patrón solicitado.

ps -ef | grep <process> | grep -v grep

Linux
  1. ¿Cómo obtener el ID de proceso del proceso en segundo plano?

  2. ¿Cómo obtener el valor de retorno de CHILD PROCESS?

  3. ¿Cómo obtener la ruta completa de un archivo?

  4. Cómo obtener un proceso secundario del proceso principal

  5. ¿Cómo obtener solo la ID del proceso en especificar el nombre del proceso en Linux?

Cómo mostrar la información del proceso usando Procs en Linux

Cómo mostrar PPID en Linux

Cómo obtener el nombre de archivo de la ruta completa en Linux

Cómo mostrar la información de la CPU de Linux usando CPUFetch

Cómo obtener el uso de la CPU de un solo proceso en Linux

¿Cómo obtener la URL del repositorio svn actual?