10
votes

Tuer un processus sous Linux

server01:/# ps -ax | grep java

Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html

 7342 pts/3    Z      0:00 [java] <defunct>

 7404 pts/3    S+     0:00 grep java


server01:/# kill 7342

server01:/# ps -ax | grep java

Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html

 7342 pts/3    Z      0:00 [java] <defunct>

 7406 pts/3    S+     0:00 grep java


server01:/# 
In the above I am using ps command to know the pid of the java process which is 7342 in the above case.Then I killed that process using kill command.
But that is not killed because again ps command shows java process with pid 7342.Should I use some else command to kill the process and Why kill is not able to kill the processThanx

2 commentaires

Appartient sur superuserer.com


La question ne concerne pas la programmation générale, mais sur les systèmes. Essayez superuserer.com


7 Réponses :


0
votes
kill $(pgrep [search pattern])
See if that works better.  You have to be either root or the process owner to kill a process.

0 commentaires

14
votes

essayer

PS AUX

alors

tuer -1 pid_number

Demander au programme de se fermer, s'il ne répond pas, vous pouvez le forcer à fermer

tuer -9 pid_number

N'oubliez pas que l'utilisation de -9 pour forcer le programme finalisera sans demander et ne pas sauver quoi que ce soit Vérifiez: Homme tuer Pour plus de détails


1 commentaires

N'oubliez pas que Kill -9 devrait être votre dernier recours car il ne laisse pas que les enfants traitent du processus que vous meurez. Ils deviennent donc des processus zombies.



5
votes

Kill -9 peut être utilisé comme dernier recours pour assurer le processus matrien .....


0 commentaires

6
votes

Linux prend en charge les commutateurs de style BSD à la commande ps (sans le plus haut - ... Dash / Hyhen). Si on fournit l'hypen, la version GNU CARUTILS de PS (celui qui est standard sur les distributions de Linux traditionnels) tentera d'interpréter les commutateurs comme étant compatible SYSV. C'est la source de votre erreur.

Je recommande d'utiliser la forme BSD des commutateurs et recherchez l'option -o pour spécifier un format de sortie composé uniquement du PID des processus correspondants.

Aussi, vous essayez de tuer un zombie. Comme vous avez découvert que c'est un effort futile. Un zombie est un espace réservé dans le processus capable d'un processus déjà mort. Il reste dans la table de processus jusqu'à ce que son processus parent "récolte" son code de sortie. Si le parent ne fait jamais un attendre () appel système, l'entrée restera là-bas jusqu'à une fois que le parent est tué, à quel point le zombie (et tout autre processus orpheliné) sera hérité par le init processus. La normale init sous Linux (ou toute autre forme de UNIX) récolte périodiquement tous les processus morts (zombies).

conceptuellement, chaque processus qui sort sur un système UNIX / Linux consacre une petite quantité de temps sous la forme d'un "zombie" ... qui est qu'il devrait toujours y avoir une période de temps entre la résiliation du processus et le moment où un autre processus lit sa valeur de sortie (même si seulement pour le jeter, comme init fait).

Cette question devrait vraiment aller sur Serverfault


1 commentaires

Addition: en exécutant PS AUXF Vous verrez ce que le processus parent est. Il est soit bloqué aussi, ou ne prêtant pas attention à ses enfants.



1
votes

Le processus est répertorié comme défunt. Son travail est fait et il est gardé car le processus parent est toujours là. Toutefois, si le parent s'est écrasé ou a été tué par Kill -9, il n'y a pas de processus parent, le processus de défunt sera donc maintenu jusqu'au redémarrage. Les processus de défunt (ou de zombie) n'utilisent que des ressources minimales, vous pouvez donc les garder.

solution: tuez le parent ou utilisez tuer -9 .


2 commentaires

Ou si vous êtes frustré, Kill -Kill


Merci pour la connaissance. Kill -9 ne fonctionne pas. pouvez-vous dire à la commande de trouver un processus parent.



0
votes

Le processus Java est devenu un processus de zombie. Vous devriez essayer d'envoyer le signal sigchld sur le processus parent via tuer pour dire au processus parent de récolter le processus de l'enfant zombie. A défaut, comme mentionné par @martin, vous pouvez tuer le parent ou Kill -9 le processus de zombie.


0 commentaires

1
votes

kill -9 $ (mot-clé PGREP -F) .

Kill PID (s) recherché par 'mot-clé';


0 commentaires