¿Cómo busco un proceso por nombre sin usar grep?


62

Para buscar un proceso que pueda usar pscon grep.

Por ejemplo para buscar firefox

ps aux | grep firefox

¿Cómo obtener la misma respuesta sin usar grep?


1
Tengo curiosidad por qué querrías hacer esto, dado que la ps/grepsolución funciona tan bien.
neuronet el

OP solo quiere un comando más corto, supongo. Si hubiera algo así ps -n <process name>, respondería a su necesidad. ps -n firefoxes un poco más corto que ps | grep firefox. psya puede filtrar pido procesar una identificación de usuario, por lo que es una pregunta razonable filtrar por nombre de proceso.
Jochem Schulenklopper

Respuestas:


71

El pgrepcomando, y su hermano pkill, existe precisamente para este propósito:

  • pgrep firefox enumerará todos los procesos cuyos comandos coinciden firefox
  • pgrep -f firefox enumerará todos los procesos cuyas líneas de comando completas coincidan firefox
  • pgrep -x firefox enumerará todos los procesos cuyos comandos coinciden exactamente firefox
  • ... y así.

Y, naturalmente, pgrepse excluirá del combate, por lo que no se necesita ninguno de los greprituales asociados ps | grep.


El otro conjunto de herramientas para esto son los comandos pidofy killall. Estos no son tan flexibles como pgrepy pkill.

  • pidof firefox enumerará los procesos cuyo comando es firefox

24
ps -fC process-name

ejemplo:

ps -fC firefox

de man ps

  -C cmdlist      Select by command name.
                       This selects the processes whose executable name is
                       given in cmdlist.


 -f              Do full-format listing. This option can be combined
                       with many other UNIX-style options to add additional
                       columns. It also causes the command arguments to be
                       printed. When used with -L, the NLWP (number of
                       threads) and LWP (thread ID) columns will be added. See
                       the c option, the format keyword args, and the format
                       keyword comm.

Esta es la mejor respuesta, pero desafortunadamente no funciona en OSX. El ps -Cindicador BSD se comporta de manera completamente diferente: "Cambia la forma en que se calcula el porcentaje de CPU"
mastaBlasta

2

tople permite buscar cadenas cuando toca mayúsculas L; el proceso se resaltará y use las teclas de flecha hacia arriba y hacia abajo para desplazarse por la lista de procesos. Del mismo modo, el htopcomando permite resaltar un proceso particular cuando golpeas /. Y \filtrará todos los procesos con una cadena particular en el nombre.

Para aquellos que gustan awk, aquí hay un oneliner awk: ps -eF | awk '/process-name/ {print $11}' . Con el ps -eFnombre del proceso siempre está en la undécima columna. Alternativamente, si lo hace ps -eF | awk '{print $11}' | sort, obtendrá una lista ordenada de nombres de procesos, ordenados alfabéticamente. Conéctelo al lesscomando solo para ver la larga lista de archivos más fácilmente.


2

Un truco genial

$ps -ejH

Obtendrás todos los procesos con nombres

exmple:
1747   568   568 ?        00:00:00   colord
1833  1832  1832 ?        00:00:00   gnome-keyring-d
2263   568   568 ?        00:00:00   udisksd
2311  2311  2311 ?        00:00:00   cupsd
2315  2315  2311 ?        00:00:00     dbus

Redirige o copia el resultado a un archivo y luego ábrelo nano, presiona Ctrl+ W y puedes buscar el nombre que deseas.


1

También puede usar htopy luego presionar F4 para filtrar los resultados con una cadena coincidente definida por el usuario. También tiene una función de búsqueda personalizada disponible presionando F3.


1

Si el problema son dos procesos, solo puede usar grep:

grep firefox /proc/*/cmdline

0

Acabo de leer este ps alias en el blog de Lennart Poettering. La salida está de acuerdo con la crianza del grupo de control systemd:

alias psc='ps xawf -eo pid,user,cgroup,args'
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.