Cómo encontrar el ID de proceso (PID) de un programa de terminal en ejecución?

Estoy ejecutando un programa en la terminal con el que no puedo escapar Ctrl-C y que quiero matar. ¿Cómo puedo encontrar su PID?

Abra otra terminal y ejecute ps ax | grep foo donde foo es el nombre del programa que no responde. Esto debería devolver una línea de salida que se parece a esto:

$ ps ax | grep firefox2222 ?        S      0:00 /bin/sh /usr/lib/firefox-3.6.9/firefox2231 ?        Sl   514:36 /usr/lib/firefox-3.6.9/firefox-bin30290 pts/2    S+     0:00 grep --color=auto firefox

El primer campo de cada línea de salida es un número que representa el ID de proceso del programa que coincide con grep (puede ignorar con seguridad el último, que representa grep mismo.

Para detener el proceso de ofensa, haga lo siguiente:kill pid donde pid es el ID de proceso del programa. Es posible que tenga que usar su juicio sobre cuál de las coincidencias debe ser killed, o podrías usar top en su lugar. Utilizar kill por sí mismo envía SIGTERM, que debe probar primero, ya que permite que el programa se limpie adecuadamente después de sí mismo. Si SIGTERM falla, pruebe SIGHUP, que es un medicamento más fuerte: kill -HUP pid. Si todo lo demás falla, envíe SIGKILL. Pero, solo debe hacerlo como último recurso, porque SIGKILL hace que el kernel finalice el proceso de inmediato sin posibilidad de limpieza. Esto a veces puede resultar en corrupción de datos u otros problemas. Así que, de nuevo, solo envíe SIGKILL como último recurso. Para hacerlo, haga kill -KILL pid o kill -9 pid.

Si está ejecutando una interfaz gráfica, por supuesto, no tiene que engañar con estas locas cosas de la línea de comandos para hacer el trabajo. Simplemente abra "Monitor del sistema", navegue hasta la pestaña Procesos, elija el proceso que desea detener (Hm, ¿podría ser el que usa el 90% de la CPU?) y haga clic con el botón derecho en él. Como el proceso ya está detenido, (ese es el problema, ¿verdad?) elija Finalizar proceso o Eliminar proceso en el menú resultante.

Crédito a cabeza de gallo

No creo que haya necesidad de comandos tan largos cuando se pueden realizar los mismos comandos con pgrep, pkill, pidof, etc...

  • Para obtener el PID de un programa en ejecución

pgrep:

   pgrep [options] pattern

descripción : pgrep examina los procesos que se están ejecutando actualmente y enumera los ID de proceso que coinciden con los criterios de selección de stdout. Todos los criterios tienen que coincidir. Por ejemplo,

  • Para encontrar el proceso denominado sshd propiedad de root.

    $ pgrep -u root sshd
  • Enumere los procesos que son propiedad de root O daemon.

    $ pgrep -u root,daemon

pidof:

descripción:

Pidof busca los ID de proceso (PID) de los programas nombrados. Imprime esas identificaciones en la salida estándar.

sintaxis: pidof nombre_de_programa

  • Para matar un programa por pid, use pkillexample:

    pkill pid    pkill -f process_name    pkill -o process_name    pkill -n process_name    pkill -l process_name

    -f bandera: Busca el process_name (ver man pkill)
    -o bandera: Seleccione solo el más antiguo de los procesos coincidentes.
    -n bandera: Seleccione solo el más reciente de los procesos coincidentes.
    -l bandera: Lista el nombre del proceso, así como el ID del proceso.

La forma más fácil de conocer el PID de un programa en ejecución es usar:

pidof <application name>

Por ejemplo, si inició vim y desea conocer su pid:

pidof vim

Recuerde que deberá proporcionar el nombre exacto del programa que se inició.

Por ejemplo, si está ejecutando vi y ejecuta pidof vim no obtendrás resultados correctos.

Referir pidofpara obtener más información, consulte la página de manual.

He descubierto que es bueno usar una búsqueda que no distinga entre mayúsculas y minúsculas agregando la "- i "y usando" aux " en lugar de "ax" para obtener un resultado más descriptivo:

ps aux | grep -i firefox

Si desea eliminar todos los procesos que puede usar:

ps aux | grep -i firefox | awk {'print $2'} | xargs kill -9

Es una muerte forzada. Suelta el " -9 " si quieres una muerte suave.

Si solo desea el pid (útil para scripts de autocompletar, etc...)

pgrep -f desired_program_name

Para aquellos que ejecutan Ubuntu 16.04 LTS, usted deber utilizar ps ax y no solo ps en la línea de comandos, de lo contrario, solo obtendrá los procesos que se generan desde la instancia de terminal en particular en la que se encuentra. (por lo general, solo 'bash' [el shell en el que se encuentra] y ' ps ' [lo que acaba de ejecutar])

También puede abrir otro terminal (o cambiar a otro TTY) y ejecutar top, que es básicamente una versión de texto del Monitor del sistema. La primera columna enumera el PID de cada proceso en ejecución, que puede eliminar presionando K, ingresando el PID y luego ingresando una señal numérica para enviar.

Usted podría hacer:

ps ax | grep firefox | cut -f2 -d" " - | xargs kill -9

las dos primeras tuberías obtienen la información del proceso, luego intentamos obtener la columna PID utilizando el corte de la vieja escuela y luego le damos al PID resultante para matar.

top

o

screen -list|ls

lista de todos los PID con el proceso correspondiente

kill -[pid]

Esta es una rama de [¿Qué debo hacer cuando Ubuntu se congela?] (performance - What should I do when Ubuntu freezes? - Ask Ubuntu) como referencia para evitar que los detalles de esa pregunta se vuelvan demasiado técnicos.

Hay un comando * pidof*.