Estoy ejecutando un programa en el terminal del que no puedo escapar Ctrl, Cy que quiero matar. ¿Cómo puedo encontrar su PID?
Estoy ejecutando un programa en el terminal del que no puedo escapar Ctrl, Cy que quiero matar. ¿Cómo puedo encontrar su PID?
Respuestas:
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 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 con el que coincide grep
(puede ignorar con seguridad el último, que se representa a grep
sí mismo).
Para detener el proceso ofensivo, haga:
kill pid
donde pid es la ID del proceso del programa. Es posible que tenga que usar su juicio sobre cuál de las coincidencias necesita ser kill
editada, o podría usar top
en su lugar. El uso kill
por sí solo envía SIGTERM, que debe probar primero, ya que permite que el programa se limpie correctamente después de sí mismo. Si SIGTERM falla, intente SIGHUP, que es la medicina stonger: kill -HUP pid
. Si todo lo demás falla, envíe SIGKILL. Pero, solo debe hacerlo como último recurso, porque SIGKILL hace que el núcleo finalice el proceso inmediatamente sin posibilidad de limpieza. Esto a veces puede resultar en corrupción de datos u otros problemas. 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 engañar con estas cosas locas de la línea de comandos para hacer el trabajo. Simplemente abra "Monitor de sistema", navegue a la pestaña Procesos, elija el proceso que desea detener (Hm, ¿podría ser el que usa una CPU del 90%?) Y haga clic derecho en él. Dado que el proceso ya está detenido, (ese es el problema, ¿verdad?), Elija Finalizar proceso o Eliminar proceso en el menú resultante.
Crédito a koanhead
kill -9
es un mal consejo. He editado la respuesta para corregirlo.
ping
comando y sleep
. De acuerdo con unix.stackexchange.com/a/275826/72988 , no es posible en Ubuntu sin multiplexer
.
No creo que haya una necesidad de comandos tan largos cuando puedes ejecutar los mismos comandos con pgrep, pkill, pidof, etc.
pgrep:
pgrep [options] pattern
DESCRIPCIÓN: pgrep examina los procesos que se ejecutan actualmente y enumera los ID de proceso que coinciden con los criterios de selección para 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 de root OR daemon.
$ pgrep -u root,daemon
pidof:
DESCRIPCION :
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 pid usando el ejemplo pkill:
pkill pid
pkill -f process_name
pkill -o process_name
pkill -n process_name
pkill -l process_name
-f
flag: busca el nombre de proceso (ver man pkill)
-o
flag: selecciona solo el más antiguo de los procesos coincidentes.
-n
flag: Seleccione solo el más nuevo de los procesos coincidentes.
-l
flag: muestra 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 quiere saber su pid:
pidof vim
Recuerde que deberá proporcionar el nombre exacto del programa que se inició.
Por ejemplo, si ejecuta vi y ejecuta pidof vim
, no obtendrá resultados correctos.
Consulte pidof
la página del manual para obtener más información.
pidof mysqld
devuelve un PID. Sin embargo, si escribo pidof Mariadb
no se devuelve nada. ¿Es el mismo PID para MariaDB y MySQL?
He descubierto que es bueno usar una búsqueda que no distingue entre mayúsculas y minúsculas agregando "-i" y usando "aux" en lugar de "ax" para obtener una salida más descriptiva:
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
Esa es una muerte contundente. Suelta el "-9" si quieres una muerte suave.
ps aux | grep -i firefox...
proceso, porque contiene el texto firefox
en su comando!
grep -i firefo[x]
para combinar solo Firefox
Para aquellos con Ubuntu 16.04 LTS, se debe utilizar ps ax
y no sólops
en la línea de comandos, de lo contrario se acaba de obtener los procesos de desove de la instancia terminal en particular que usted está en. (Por lo general sólo 'bash' [la capa que está en ] y 'ps' [lo que acabas de ejecutar])
ps -e
(muestra todo) y ps -ejH
(muestra un árbol de procesos).
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.
Podrías hacerlo:
ps ax | grep firefox | cut -f2 -d" " - | xargs kill -9
los primeros dos tubos obtienen información del proceso, luego intentamos obtener la columna PID usando el corte de la vieja escuela y luego le damos el PID resultante para matar.
kill -9
es el arma más grande que tienes para matar un proceso. Debería probar una señal más suave al principio antes de recurrir a SIGKILL para darle al proceso la oportunidad de limpiar sus recursos.