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 kill
ed, 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 pidof
pá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.