¿Cómo puedo matar un proceso por su nombre?

44

A veces me doy cuenta de que el proceso se ha Pythonbloqueado. Luego lo mataré a través del Monitor de actividad y todo estará bien.

En cambio, me gustaría matar ese proceso en la Terminal. Sin embargo, buscar esto PIDparece un poco innecesario porque solo hay un proceso por el nombre Python.

¿Es posible matar un proceso por su nombre único?

Gentmatt
fuente

Respuestas:

52

Deberías poder ejecutar el comando sudo killall Python.

Debe ejecutar como root porque Python pertenece a la raíz, no al usuario.

Matt Love
fuente
Lo hice:No matching processes belonging to you were found
gentmatt
1
El proceso de Python no pertenece a su usuario. Inténtelo como root en su lugar: sudo killall Python.
HenningJ
1
@HenningJ Sudo trabajó por alguna razón. Acabo de ver que el proceso me pertenece. Podría matar el proceso sin sudocuando lo maté usando es PID. ¿Por qué?
gentmatt
1
Estoy pensando que es porque usar un PID no es específico del usuario / raíz, mientras que el nombre de un proceso sí lo es. Editaré esta respuesta para reflexionar sudo.
Matt Love
Esto también funcionó para múltiples procesos con nombres idénticos, agradable
chrismarx
21
sudo killall -s SIGINT "process name"

Si no puede ser un sudo porque le pedirá una contraseña y siento que no quiere eso en un script. pkill ven a rescatar :)

pkill -9 "process name"
Roshan Mehta
fuente
5

Puede eliminar aplicaciones utilizando Activity Monitor.app, que es la solución GUI. Eso sería una simple "forzar el abandono". Sin embargo, ¡eso no siempre funciona por diferentes razones en algunas situaciones!

La solución de línea de comandos como se menciona en el comentario anterior tiene muchas más opciones para el usuario. sudo killall Pythono si se trata de un programa en ejecución, sudo killall /Applications/Whatever.appel proceso también se cierra.

También puede forzar el cierre de un proceso, utilizando su PID asignado . En el caso de Activity Monitor.app sería kill 25794okill -9 25794

ingrese la descripción de la imagen aquí

Algunos detalles más:

El programa kill en Terminal simplemente fuerza el cierre de un programa, como por control remoto. (Incluso funciona cuando ingresa SSH a su Mac desde una ubicación remota. Siga el comando kill con el número de ID de proceso (PID corto) del programa que desea finalizar.

A menos que también use sudo, puede eliminar solo los programas que “posee”, los que se ejecutan en su cuenta. (¡El sistema operativo en sí mismo, root, siempre ejecuta sus propios programas, y es técnicamente posible que otras personas, al marcar desde la carretera, ejecuten sus propios programas incluso mientras está usando la Mac!)

La -9bandera es una "muerte no capturable, no ignorable". En otras palabras, es un asesino de fuerza industrial que no acepta súplicas de piedad del programa que está matando.

v2r
fuente
5

A pesar de que no usar PID, me parece que lo siguiente es bastante eficiente:

ps aux | grep "String or name of process"

Esta línea devuelve una gran cantidad de información sobre el (los) proceso (s) coincidentes, y usted puede killo lo que sea desde allí.

soxman
fuente
2
pkill -f "process name"

Basado en https://stackoverflow.com/a/22334807/1243763

Samir
fuente
1
¿Hay un pidof en macOS? ¿Y por qué no usar pkill que no tiene el problema del proceso adicional?
nohillside
de acuerdo y me perdí eso. Tenía pidofbinario como alias no estándar de ps -e -o pid,args | grep -E "\b$1\b" | awk "{print \$1}" | tr '\n' ' '. Entonces, pkill -ftiene más sentido.
Samir