¿Hay alguna forma de pgrep
darme toda la información sobre cada proceso que lo ps
hace? Sé que puede canalizar ps
a través grep
pero eso es un montón de escribir y también me da el grep
proceso en sí mismo, que no quiero.
26
pgrep
Las opciones de salida son bastante limitadas. Es casi seguro que tendrá que volver a enviarlo ps
para obtener la información importante. Puede automatizar esto usando una función bash en su ~/.bashrc
.
function ppgrep() { pgrep "$@" | xargs --no-run-if-empty ps fp; }
Luego llame al comando con.
ppgrep <pattern>
function ppgrep() { pgrep "$@" | xargs ps fp 2> /dev/null; }
De lo contrario, si ningún proceso coincide con su búsqueda,ps
volcará toda una meguila de uso.ps
necesita un guión para las banderas:function ppgrep() { pgrep "$@" | xargs ps -fp 2> /dev/null; }
-r
que solo ejecutará el comando si ha recibido una lista.ps fp $(pgrep -d, "$@")
Combinar
pgrep
con elps
usoxargs
!Por ejemplo, intente
para obtener una lista completa de procesos de
user
.Es bueno que mantenga la primera línea con los nombres de las columnas.
grep
siempre suelta los nombres de columna.fuente
Lo siguiente solo le ofrece PID + línea de comando completa. Para "toda la información
ps
", vea otras respuestas ...La mayoría de los linuxes 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 coincide con el patrón que le das al nombre del ejecutable. Si desea hacer coincidir la línea de comando completa (como lo hace grepping ps), agregue la opción
-f
(--full
).En versiones anteriores (incluido el proyecto procps original ), la
-l
opción mostraba información pero su comportamiento variaba:pgrep -fl
hizo coincidir el patrón con la línea de comando completa y mostró la línea de comando completa.pgrep -l
solo coincidía solo con el nombre del ejecutable y solo mostraba el nombre del ejecutable.Si no desea una coincidencia completa, no puede ver la línea de comando completa :-( [ https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=526355#15 ]
No estoy seguro de qué código * BSD usa, pero su página de manual documenta el
-fl
comportamiento anterior.Desafortunadamente, ni siquiera puede usarlo de forma
-fl
portátil: en procps-ng reciente,-f
(--list-name
) siempre imprime solo el nombre del ejecutable.fuente
Linux
Para la versión GNU de
pgrep
la-i
(insensibilidad a mayúsculas y minúsculas), no se admite la salida larga + difusa con-af
.Página del manual :
Mac OS
En OSX (y por inferencia, en BSD)
-l
( salida larga ) en combinación con-f
( coincidencia con listas de argumentos completos ) se mostrará el comando completo (-i
agrega mayúsculas y minúsculas):La página del manual :
fuente
Use la opción -v para grep: devuelve todo PERO el patrón solicitado.
fuente
pgrep -u user | xargs ps -f -p
No creo que exista, la mayor cantidad de información que puede obtener es el nombre y la identificación del proceso utilizando la opción -l para pgrep.
ps admite todo tipo de opciones de formato, por lo que solo haría un alias para lo que desea guardar al escribir. Una manera simple de excluir el proceso grep de la salida es incluir una tubería adicional
grep -v grep
para excluir cualquier proceso grep.fuente
Para eliminar el
grep
proceso, puede usar paréntesis como parte de su patrón:Puedes hacer esto con
ps
ypgrep
:fuente
Esto te ayudará, supongo:
ps auxww
fuente