2012-06-04 9 views
28

Hi Ho il seguente processo che non posso uccidere:Come uccidere un processo in cygwin?

The process to be killed.

Sono in esecuzione Cygwin in Windows XP a 32 bit.

Ho provato i seguenti comandi:

/bin/kill -f 4760 
/bin/kill -9 5000 
kill -9 5000 
kill 5000 

quando scrivo/bin/kill -f 4760 ottengo il messaggio, 'kill: Impossibile aprire pid 4760'.

Quando scrivo/bin/kill -9 5000 ottengo il messaggio 'kill: 5000: nessun processo simile'.

Semplicemente non capisco perché questo processo non possa essere ucciso. Dal momento che ha un WINID non dovrebbe essere ucciso da/bin/kill -f 4760?

speranza che qualcuno possa aiutare thx :)

+3

1. Avviare Cygwin come utente amministratore 2. Utilizzare il percorso/bin/kill (kill è un comando shell nella shell bash) 3./ bin/kill -f dovrebbe quindi funzionare –

+0

1. avviare il terminale Cygwin come utente amministratore 2. Utilizzare il percorso/bin/kill (kill è speciale nella shell bash) 3./bin/kill -9 -f dovrebbe quindi lavoro 4. È possibile che i processi di Windows si trovino in uno stato in cui non possono essere eliminati (ad esempio il debug) –

risposta

21

Il processo è bloccato da Windows più probabile. L'errore che stai ricevendo "couldnt open PID XXX" punta a questo. Per confermare provare uccidendolo con finestre taskkill

taskkill /PID 4760 
+0

Quando digito taskkill/PID 4760 o taskkill/PID 5000 ottengo l'errore: 'ERRORE: il processo " 4760 "non trovato". – Diemauerdk

+0

Inoltre, nella gestione delle attività di Windows non riesco a vedere il processo. – Diemauerdk

+0

Lo vedi quando fai una lista di attività | grep "dscli" dalla riga di comando di Windows? – kjp

2

Diversi programmi Windows gestirà i segnali che kill e che sono inviati in modo diverso; non sono mai stati progettati per gestirli allo stesso modo dei programmi Linux/Cygwin.

L'unico metodo affidabile per uccidere un programma Windows consiste nell'utilizzare uno strumento specifico di Windows, ad esempio Task Manager o Process Explorer.

Detto questo, se non lo hai già fatto, potresti avere fortuna con l'esecuzione del terminale Cygwin in modalità amministratore (fai clic con il pulsante destro del mouse sul collegamento e seleziona "Esegui come amministratore").

1

Il metodo presentato da @Donal Tobin è corretto:

kill -f <pid>

Tuttavia, non ho bisogno di effettuare il login come amministratore.

8

Stranamente, le seguenti opere in Cygwin:

echo PID1 PID2 PID3 | xargs kill -f 

Ad esempio:

ps -W | grep WindowsPooPoo | awk '{print $1}' | while read line; do echo $line | xargs kill -f; done; 
+0

Il fattore importante per me qui era l'argomento' -f' in 'kill' . Aggiungendo che si è fermato l'errore "Nessun processo di questo tipo". Grazie! –

1

Creare un file denominato killall.sh con questa linea

ps -W | grep $1 | awk '{print $1}' | while read line; do echo $line | xargs kill -f; done; 

poi dare esecuzione permessi.

chmod 777 killall.sh 

Nel vostro .bash_profile aggiungere questa riga

alias killall="~/killall.sh" (point it to the correct location) 

Poi basta digitare "killall [nome]"