¿Hay alguna forma de pgrepdarme toda la información sobre cada proceso que lo pshace? Sé que puede canalizar psa través greppero eso es un montón de escribir y también me da el grepproceso en sí mismo, que no quiero.
26
pgrepLas opciones de salida son bastante limitadas. Es casi seguro que tendrá que volver a enviarlo pspara 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,psvolcará toda una meguila de uso.psnecesita un guión para las banderas:function ppgrep() { pgrep "$@" | xargs ps -fp 2> /dev/null; }-rque solo ejecutará el comando si ha recibido una lista.ps fp $(pgrep -d, "$@")Combinar
pgrepcon elpsusoxargs!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.
grepsiempre 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
-lopción mostraba información pero su comportamiento variaba:pgrep -flhizo coincidir el patrón con la línea de comando completa y mostró la línea de comando completa.pgrep -lsolo 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
-flcomportamiento anterior.Desafortunadamente, ni siquiera puede usarlo de forma
-flportátil: en procps-ng reciente,-f(--list-name) siempre imprime solo el nombre del ejecutable.fuente
Linux
Para la versión GNU de
pgrepla-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 (-iagrega 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 -pNo 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 greppara excluir cualquier proceso grep.fuente
Para eliminar el
grepproceso, puede usar paréntesis como parte de su patrón:Puedes hacer esto con
psypgrep:fuente
Esto te ayudará, supongo:
ps auxww
fuente