Salut, j'ai le processus suivant que je ne peux pas tuer:
Je suis en cours d'exécution cygwin dans Windows XP 32 bits.
J'ai essayé d'émettre les commandes suivantes:
/bin/kill -f 4760
/bin/kill -9 5000
kill -9 5000
kill 5000
Quand j'écris/bin/kill -f 4760, je reçois le message 'kill: impossible d'ouvrir le pid 4760'.
Quand j'écris/bin/kill -9 5000, je reçois le message 'kill: 5000: aucun processus de ce type'.
Je ne comprends tout simplement pas pourquoi ce processus ne peut pas être tué. Puisqu'il a un WINID, ne devrait-il pas être tué par/bin/kill -f 4760?
j'espère que quelqu'un peut aider thx :)
Le processus est probablement verrouillé par Windows. L'erreur que vous obtenez "Impossible d'ouvrir PID XXX" pointe vers ceci . Pour confirmer, essayez de le tuer avec windows taskkill.
taskkill /PID 4760
Étrangement, les travaux suivants dans Cygwin:
echo PID1 PID2 PID3 | xargs kill -f
Par exemple:
ps -W | grep WindowsPooPoo | awk '{print $1}' | while read line; do echo $line | xargs kill -f; done;
Différents programmes Windows gèrent les signaux que kill
envoie différemment. ils n'ont jamais été conçus pour les traiter de la même manière que les programmes Linux/Cygwin.
La seule méthode fiable pour tuer un programme Windows consiste à utiliser un outil spécifique à Windows, tel que Task Manager ou Process Explorer.
Cela dit, si vous ne l’avez pas déjà fait, vous pourrez peut-être utiliser votre terminal Cygwin en mode administrateur (cliquez avec le bouton droit sur votre raccourci et sélectionnez "Exécuter en tant qu’administrateur").
Créez un fichier appelé killall.sh avec cette ligne
ps -W | grep $1 | awk '{print $1}' | while read line; do echo $line | xargs kill -f; done;
Puis donnez-lui des autorisations d'exécution.
chmod 777 killall.sh
Dans votre .bash_profile, ajoutez cette ligne
alias killall="~/killall.sh" (point it to the correct location)
Ensuite, il vous suffit de taper "killall [nom]"
La méthode présentée par @Donal Tobin est correcte:
kill -f <pid>
Cependant, je n'ai pas besoin de me connecter en tant qu'administrateur.
#/bin/bash
ps -W | grep "$1" | awk '{print $1}' | xargs kill -f;
$ killall <process name>