Come posso uccidere un processo con il suo nome?


44

A volte noto che il processo ha Pythonriattaccato. Poi lo ucciderò tramite Activity Monitor e tutto andrà bene.

Vorrei invece uccidere quel processo nel Terminale. Tuttavia, cercare ciò PIDsembra un po 'inutile perché c'è solo un processo con il nome Python.

È possibile uccidere un processo con il suo nome univoco?

Risposte:


52

Dovresti essere in grado di eseguire il comando sudo killall Python.

È necessario eseguire come root perché Python appartiene a root, non all'utente.


L'ho fatto:No matching processes belonging to you were found
gentmatt

1
Il processo Python non appartiene al tuo utente. Provalo come root invece: sudo killall Python.
HenningJ

1
@HenningJ Sudo ha funzionato per qualche motivo. Ho appena visto che il processo appartiene a me. Potrei uccidere il processo senza sudoquando l'ho ucciso usando esso PID. Perché?
gentmatt

1
Sto pensando perché l'uso di un PID non è specifico dell'utente / root, mentre lo è un nome di processo. Modificherò questa risposta per riflettere sudo.
Matt Love

Questo ha funzionato anche con più processi identici, bello
chrismarx

21
sudo killall -s SIGINT "process name"

Se non puoi essere un sudo perché ti chiederà la password e sento che non lo vuoi in uno script. pkill vieni in soccorso :)

pkill -9 "process name"

5

Puoi uccidere le applicazioni usando Activity Monitor.app, essendo la soluzione GUI. Sarebbe una semplice "uscita forzata". Tuttavia, ciò non sempre funziona per diversi motivi in ​​alcune situazioni!

La soluzione da riga di comando, come menzionato nel commento sopra, contiene molte più opzioni per l'utente. sudo killall Pythono se si tratta di un programma in corso sudo killall /Applications/Whatever.app, il processo viene chiuso anche.

È inoltre possibile forzare la chiusura di un processo utilizzando il PID assegnato . Nel caso di Activity Monitor.app sarebbe kill 25794okill -9 25794

inserisci qui la descrizione dell'immagine

Alcuni dettagli in più:

Il programma kill nel Terminale forza semplicemente l'uscita da un programma, come se fosse un controllo remoto. (Funziona anche quando entri nel tuo Mac da una posizione remota. Segui il comando kill con il numero ID processo (PID breve) del programma che vuoi terminare.

A meno che tu non usi anche sudo, puoi uccidere solo i programmi che "possiedi", quelli che funzionano con il tuo account. (Il sistema operativo stesso, il root, esegue sempre programmi propri ed è tecnicamente possibile che altre persone, connettendosi dalla strada, eseguano programmi autonomi anche mentre si utilizza il Mac!)

La -9bandiera è una "uccisione non irrinunciabile, non ignorabile". In altre parole, è un assassino di forza industriale che non accetta motivi di misericordia dal programma che stai uccidendo.


5

Anche se fa uso PID, trovo quanto segue per essere piuttosto efficiente:

ps aux | grep "String or name of process"

Questa riga restituisce una miriade di informazioni sui processi di abbinamento e puoi killo qualunque cosa da lì.


2
pkill -f "process name"

Basato su https://stackoverflow.com/a/22334807/1243763


1
C'è un pidof su macOS? E perché non usare pkill che non ha il problema del processo aggiuntivo?
Nohillside

d'accordo e mi sono perso. Avevo pidofbinario come alias non standard di ps -e -o pid,args | grep -E "\b$1\b" | awk "{print \$1}" | tr '\n' ' '. Quindi, pkill -fha più senso.
Samir,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.