Comment fermer les programmes qui ne répondent pas sous Linux à partir de la ligne de commande


La gestion des processus dans les systèmes d’exploitation est un vaste sujet, avec des milliers de pages de littérature technique sur le sujet. De plus, c’est un sujet pour un public très professionnel. Aussi, ce n’est pas un problème à démontrer ici, mais juste à montrer très rapidement, par exemple, comment fermer un programme en ligne de commande qui ne répond plus sous Linux. Cet article complète l’excellent article de Steve sur la façon d’arrêter un programme têtu.
La commande à exposer ici est la commande tuerVous pouvez l’utiliser avec toutes les distributions Linux.

tuer ne porte pas toujours exactement son nom

En fait, bien qu’elle soit également (et principalement) utilisée pour cela, comme nous le verrons plus tard, la commande kill n’est pas seulement destinée à arrêter avec autorité un processus têtu. Elle sait faire plus.
En réalité, La fonction de base de la commande kill est d’envoyer un message (signal) à un processus en cours d’exécutionCes signaux peuvent avoir des propriétés différentes et nous pouvons même créer des signaux personnalisés. Les différents signaux de base disponibles suffisent à montrer la complexité du sujet, mais on peut y mentionner la pause et l’arrière-plan du processus (signal 19 = SIGSTOP et son raccourci clavier CTRL-Z).

tuer Encore principalement utilisé pour arrêter les processus

Sinon, nous choisirons très probablement un autre nom de commande…

poliment

Comme nous le savons maintenant, kill envoie un signal à un processus. Le signal par défaut envoyé par kill est le signal 15, qui est SIGTERM. Cela nécessite que le processus se termine correctement, c’est-à-dire qu’il prenne le temps de terminer le traitement en cours et de libérer les ressources utilisées avant d’appeler stop (c’est un peu plus compliqué qu’il ne l’est, car, entre autres, le parent du processus est arrêté pour jouer un rôle dans le programme). Ce signal est envoyé, par exemple, lorsque vous cliquez sur la petite croix pour fermer une fenêtre du logiciel, ou lorsque vous appelez la commande kill sans spécifier de signal à envoyer. Notez qu’un processus peut choisir d’ignorer ce signal même s’il n’est pas amorcé.

A Voir  Alternatives gratuites à Word et Excel (suite Microsoft Office)

Definitive: Comment fermer les programmes qui ne répondent pas sous Linux à partir de la ligne de commande

Dans certains cas, un programme ou un processus ne répond plus aux commandes de contrôle qui lui sont envoyées par le système d’exploitation. Les gens disent généralement que c’est « planté ». Dans ces cas, nous invoquerons le signal 9 (SIGKILL) de la commande kill. Cette fois, ce n’est pas le processus lui-même qui reçoit le signal (puisqu’il a déjà planté, il ne peut de toute façon pas le recevoir), mais l’ordonnanceur du noyau Linux. Dans le processus, il sera lui-même responsable de la résiliation administrative et autoritaire du processus qui n’est plus réactif. Les ressources système consommées par le processus implanté seront libérées sans précautions (par exemple, les données en mémoire ne seront pas fusionnées sur le disque dur).

quelques exemples

Exemple tuerBesoin de connaître le numéro de processus

la commande kill doit être indiquée PID Le processus à terminer (PID = Process IDentifier, est l’ID de processus qui lui est attribué par le planificateur du noyau).Ce PID peut être obtenu en entrant la commande ps qui répertorie les processus en cours d’exécution, filtrés (à l’aide de la commande grep) avec le nom de l’exécuteur testamentaire.

P.S. | grep -v grep | grep Commande Thunderbird ps, avec l’option « aux », pour répertorier les processus en cours d’exécution. Ici, nous avons filtré les noms de Thunderbird à l’aide de la commande grep.

Le PID du processus est affiché dans la colonne 2. Dans notre exemple, sa valeur est 2337.
Pour terminer le processus correctement, entrez la commande suivante :

A Voir  iPhone 12 vs iPhone 13 : quelle est la différence ?

tuer 2337

Cependant, si nous y étions, il se pourrait que notre programme (Thunderbird en l’occurrence) ne réponde plus et que nous ne puissions pas le fermer en cliquant sur la croix dans sa fenêtre. Dans ce cas, saisissez la commande suivante :

kill -9 2337 Utilisez la commande kill pour envoyer un signal SIGKILL (-9) afin de forcer l’arrêt d’un processus qui ne répond pas.

Cette commande envoie le signal SIGKILL, qui demande au planificateur du noyau Linux de tuer les programmes tenaces.

Un moyen d’éviter de déterminer le numéro de processus avant de fermer un programme qui ne répond pas sous Linux à partir de la ligne de commande

Commande tuer tous Destiné à envoyer un signal comme kill, mais cette fois ce n’est pas pour le numéro de processus : c’est pour tous les processus exécutant la commande donnée. Notez également que, comme la commande kill, elle reçoit un numéro de signal à envoyer.

tuer l’oiseau-tonnerre

La commande ci-dessus tuera proprement tous les processus exécutant le programme Thunderbird.

Si le programme est réajusté, Nous pouvons envoyer un signal SIGKILL comme kill en entrant la commande suivante :

killall -9 Thunderbird utilise la commande killall pour envoyer le signal SIGKILL (-9), qui tuera avec autorité tous les processus exécutant la commande Thunderbird.

Mais attention, même si la commande killall est pratique, puisqu’il n’est pas nécessaire de déterminer le nombre de processus à tuer, ça peut avoir des effets secondaires. efficace, Son utilisation se fera au prix de l’arrêt brutal de processus non implantéscar killall envoie le signal à tous les processus exécutant le programme donné.
Autrement dit, dans notre exemple Thunderbird, il n’y a pas de problème car Thunderbird est exécuté par un seul processus. Ce n’est pas toujours le cas, en particulier avec les programmes serveur, qui peuvent être configurés pour augmenter les processus à mesure que la charge augmente.