Saltar al contenido

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

Contamos con el arreglo a esta incógnita, o por lo menos eso deseamos. Si sigues con dudas puedes dejarlo en el apartado de comentarios, que sin tardanza

Solución:

Abre otra terminal y ejecuta 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 firefox
2222 ?        S      0:00 /bin/sh /usr/lib/firefox-3.6.9/firefox
2231 ?        Sl   514:36 /usr/lib/firefox-3.6.9/firefox-bin
30290 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 sí mismo.

Para detener el proceso ofensivo, haz lo siguiente:
kill pid donde pid es el ID de proceso del programa. Es posible que deba usar su criterio para determinar cuál de las coincidencias debe ser killed, o podrías usar top en lugar de. Utilizando kill por sí mismo envía SIGTERM, que debe probar primero, ya que permite que el programa se limpie correctamente después de sí mismo. Si falla SIGTERM, pruebe SIGHUP, que es una medicina 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 inmediatamente sin posibilidad de limpieza. Esto a veces puede resultar en la corrupción de datos u otros problemas. Entonces, de nuevo, solo envíe SIGKILL como último recurso. Para hacerlo, haz kill -KILL pid o kill -9 pid.

Si está ejecutando una interfaz gráfica, por supuesto, no tiene que perder el tiempo con esta loca línea de comandos para hacer el trabajo. Simplemente abra “Monitor del sistema”, vaya a 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. Dado que el proceso ya se detuvo (ese es el problema, ¿verdad?), elija Finalizar proceso o Eliminar proceso en el menú resultante.

Crédito a koanhead

No creo que haya necesidad de comandos tan largos cuando puedes 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 llamado sshd propiedad de root.

    $ pgrep -u root sshd
    
  • Enumere los procesos propiedad del demonio OR raíz.

    $ pgrep -u root,daemon
    

pidof:

DESCRIPCIÓN:

Pidof encuentra la identificación del proceso (pids) de los programas nombrados. Imprime esas identificaciones en la salida estándar.

sintaxis:
pidof nombre_programa

  • Para matar un programa por pid, use el ejemplo de pkill:

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

    -f bandera: busca el nombre_del_proceso (ver man pkill)
    -o bandera: seleccione solo el más antiguo de los procesos coincidentes.
    -n bandera: seleccione solo el más nuevo de los procesos coincidentes.
    -l flag: Enumere el nombre del proceso así como el ID del proceso.

La forma más fácil de saber el pid de un programa en ejecución es usando:

pidof 

Por ejemplo, si iniciaste vim y quieres saber su pid:

pidof vim

Recuerde que deberá proporcionar el nombre exacto del programa que se ha iniciado.

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

Referirse a pidofpágina del manual para más información.

Tienes la opción de añadir valor a nuestra información aportando tu veteranía en las explicaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 1 Promedio: 4)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *