¿Cuál es el comando de terminal para encontrar la identificación de un proceso?


12

Quiero salir de un proceso usando la línea de comando, pero no puedo recordar el comando para buscar la ID del proceso. ¿Alguien lo sabe?

Respuestas:


13

El comando para encontrar la identificación de un proceso (dado su nombre) es pidof. Sin embargo, dado que su intención es matar el proceso, hay formas mejores / más fáciles que usar pidofpara encontrar su pid primero:

Suponiendo que el proceso que desea eliminar se identifica de forma exclusiva por su nombre (o si desea eliminar todos los procesos con ese nombre), no necesita conocer su pid. Simplemente puedes hacer killall processname.

Si hay varios procesos con el mismo nombre, pero solo desea eliminar uno de ellos, usarlo pidofno lo ayudará mucho, porque le dará los pids, pero no le dará ninguna información para determinar cuál de los pids pertenece al proceso que realmente quieres matar.

En este caso, puede hacer ps aux | grep processnamelo que mostrará todos los procesos con el nombre dado, así como la consola en la que se están ejecutando (si corresponde) y los argumentos con los que fueron invocados, lo que con suerte le permite identificar el proceso que está buscando .

Si el proceso abrió alguna ventana X, también puede usar xkillpara matar (invocar xkilly luego hacer clic en la ventana).


7

Usted debe echar un vistazo a pgrep, y pkill, dos utilidades muy útiles y potentes que se encuentran en la mayoría de los sistemas Linux y UNIX.

$ apropos pgrep
pgrep (1) - look up or signal processes based on name and other attributes

5

Puede ejecutar ps -Aen la terminal para mostrar todos los procesos (con su ID de proceso) que se están ejecutando actualmente.


Canalice para grepbuscar el nombre del proceso específico:ps -A | grep 'my name'
Gabriel Staples

2

También tuve un problema similar. Solía pstree -p; esto me mostró los procesos actuales en ejecución, incluidas las ID de proceso.


comando interesante
jumpnett


1

Mi favorito es pstree -p | grep $(program_name). Esto realmente engloba el proceso, lo resalta y muestra el pid entre paréntesis.

Mi siguiente favorito (especialmente cuando programo y necesito todos los pids del proceso) es pgrep -law "". Literalmente, le proporciona cada ejecución pid seguida de la aplicación (con ruta absoluta).

Esto se puede reducir a pgrep -lw ""pid seguido del nombre del programa o incluso solo pgrep -lpara todos los pids

Por supuesto, puede buscar el nombre de un programa en particular (o parte del programa). (es decir pgrep -lw firef, probablemente mostrará algo como "4567 firefox").


¿No pstree -psH $(pgrep prgram_name)sería mejor para el primer caso?
muru

Sí, eso también funciona. Podrías hacer un alias para eso. Estaba usando $ () para representar el nombre de un programa; Creo que escribir $ (nombre pgrep) es un poco molesto debido al signo de dólar, pero creo que un alias de eso podría ser útil.
dylnmc

0

Esta respuesta, de @Ben en una pregunta duplicada , ha resuelto mi problema:

Considere usar el topcomando en la terminal.

   The  top  program  provides  a dynamic real-time view of a running
   system.  It can display system summary information as  well  as  a
   list  of processes or threads currently being managed by the Linux
   kernel.  The types of system summary  information  shown  and  the
   types,  order  and size of information displayed for processes are
   all user configurable and that configuration can be  made  persis‐
   tent across restarts.

vía man top

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.