Lorsque vous essayez de terminer un process pour de bon, quelle option pour "tuer" devriez-vous utiliser?

Je reçois beaucoup de messages contradictoires de la part des gens et je me demandais s'il n'y avait pas vraiment de différence dans ce que vous utilisiez.

kill 'x' killall 'x' kill -9 'x' 

Ce sont des options que l'on m'a dit d'utiliser jusqu'ici, mais certaines personnes disent que tuer -9 est juste exagéré, tuer par lui-même ne fonctionne pas, etc.

Est-ce que quelqu'un a un conseil sur lequel devrait être utilisé dans le cas le plus standard de simplement terminer un process (et donc son état aussi)?

[edit] Je cherche quoi utiliser quand vous voulez arrêter l'exécution de votre process afin que vous puissiez en lancer un nouveau, dès le début

Il existe un certain nombre de signaux dont la disposition par défaut est de terminer le process. Le signal de terminaison ultime est SIGKILL car il ne peut pas être traité et le process n'a pas d'autre choix que de mourir. Cela signifie également que si vous l'envoyez, le process est privé d'une opportunité de nettoyage. Par conséquent, les bonnes manières exigent d'envoyer un signal comme SIGTERM qui peut être traité en premier et seulement si le process ne se ferme pas après un certain time, envoyez-le SIGKILL.

Notez que SIGINT et SIGQUIT ne sont pas de bons candidats pour une terminaison de process arbitraire. En raison du fait qu'ils peuvent être générés à partir du keyboard du terminal, de nombreuses applications les utilisent à des fins spéciales. Par exemple, l'interpréteur python utilise SIGINT pour générer l'exception KeyboardInterrupt (également dans les sessions interactives python où il revient simplement à l'invite) et JVM utilise SIGQUIT pour vider les traces de la stack. SIGINT et SIGQUIT restnt efficaces pour la plupart des utilitaires de command line standard comme find ou cat .

Pendant l'arrêt du système, la plupart des systèmes UNIX et Linux envoient SIGTERM à tous les process, suivis de 5 secondes d'attente, suivis de SIGKILL. C'est la méthode recommandée pour arrêter en toute security un process arbitraire.

Notez également que même SIGKILL ne peut pas terminer un process coincé dans une attente ininterrompue jusqu'à ce que le process se réveille.

Vous devriez commencer par le plus doux et escalader à partir de là. Cela signifie, SIGINT, SIGTERM, SIGQUIT, SIGKILL. Bien que la plupart des gens sautent SIGINT et SIGQUIT.