Nous avons déjà discuté de la commande kill que vous pouvez utiliser si vous souhaitez mettre fin à des processus sous Linux. Cependant, il existe un autre utilitaire en ligne de commande que vous pouvez utiliser dans le même but :killall . Dans ce didacticiel, nous aborderons les bases de cette commande à l'aide d'exemples faciles à comprendre.
Mais avant cela, il convient de mentionner que tous les exemples inclus dans ce didacticiel ont été testés sur Ubuntu 18.04 LTS.
Commande Linux killall
La commande killall vous permet de tuer les processus par leur nom. Voici la syntaxe de l'outil :
killall [OPTIONS] name
Et voici comment la page de manuel explique l'outil :
killall sends a signal to all processes running any of the specified commands. If no signal name is specified, SIGTERM is sent. Signals can be specified either by name (e.g. -HUP or -SIGHUP) or by number (e.g. -1) or by option -s.
If the command name is not regular expression (option -r) and contains a slash (/), processes executing that particular file will be selected for killing, independent of their name.
killall returns a zero return code if at least one process has been killed for each listed command, or no commands were listed and at least one process matched the -u and -Z search criteria. killall returns non-zero otherwise.
A killall process never kills itself (but may kill other killall processes).
Les exemples de style Q&A suivants devraient vous donner une meilleure idée du fonctionnement de la commande killall.
Q1. Comment utiliser la commande killall ?
L'utilisation de base de l'outil est très simple - tout ce que vous avez à faire est de passer le nom du processus en argument à killall. Par exemple, pour tuer le gthumb processus qui s'exécutait sur mon système, j'ai utilisé killall de la manière suivante :
killall gthumb
Notez que si vous ne connaissez pas le nom exact du processus, vous pouvez utiliser le ps commande pour récupérer ces informations.
Q2. killall est-il sensible à la casse ?
Oui c'est le cas. Il génère une erreur "aucun processus trouvé" si l'utilisateur n'écrit pas le nom du processus dans la casse correcte. Voici un exemple :
Cependant, si vous le souhaitez, vous pouvez forcer killall à ignorer la casse en utilisant le -I option de ligne de commande.
Q3. Comment faire en sorte que killall demande avant de terminer le processus ?
Supposons que vous souhaitiez que la commande killall demande les autorisations de l'utilisateur avant de tuer un processus, vous pouvez alors utiliser le -i option de ligne de commande. Cela rendra l'opération killall interactive.
Par exemple :
Q4. Comment choisir le signal que killall envoie au processus ?
Par défaut, c'est le signal SIGTERM que killall envoie aux processus. Cependant, vous pouvez également envoyer d'autres signaux. Vous pouvez utiliser les options -s , --signal , et -SIGNAL pour envoyer ces autres signaux.
Cependant, pour que cela fonctionne, vous devez savoir quels signaux la commande killall peut envoyer. Vous pouvez le faire en utilisant le -l option de ligne de commande.
killall -l
Voici la liste de la commande susmentionnée produite sur notre système :
Q5. Comment empêcher killall de se plaindre si le processus spécifié n'existe pas ?
Si le processus dont le nom est passé à "killall" n'est pas en cours d'exécution (n'existe pas), l'outil le transmet à l'utilisateur dans la sortie.
Cependant, si vous ne voulez pas que l'outil produise une telle sortie, vous pouvez utiliser le -q option de ligne de commande.
Ainsi, vous pouvez voir que la commande killall est restée silencieuse lorsque -q a été utilisé.
Q6. Comment tuer tous les processus appartenant à un utilisateur ?
Si l'exigence est de tuer tous les processus appartenant à un utilisateur spécifique, vous pouvez utiliser le -u option fournie par killall. Inutile de dire que l'option vous oblige à spécifier le nom d'utilisateur de l'utilisateur comme entrée.
killall -u [user-name]
Par exemple :
killall -u himanshu
Q7. Comment tuer les processus basés sur le temps ?
Supposons que vous souhaitiez tuer tous les processus en cours d'exécution depuis plus de 5 heures, vous pouvez le faire en utilisant le -o option de la manière suivante :
killall -o 5h
Bien sûr, vous pouvez spécifier des noms de processus si vous ne voulez pas tuer tous les processus. De même, si vous voulez tuer des processus qui ont, disons, moins de 4 heures, vous pouvez le faire en utilisant le -y option de ligne de commande.
killall -y 4h
Voici comment la page de manuel explique ces options :
-o, --older-than
Match only processes that are older (started before) the time
specified. The time is specified as a float then a unit. The
units are s,m,h,d,w,M,y for seconds, minutes, hours, days,
weeks, Months and years respectively.
-y, --younger-than
Match only processes that are younger (started after) the time
specified. The time is specified as a float then a unit. The
units are s,m,h,d,w,M,y for seconds, minutes, hours, days,
weeks, Months and years respectively.
Q8. Comment s'assurer que killall ne revient qu'après la mort des processus ?
Une fois le signal envoyé par killall au processus, si vous voulez vous assurer que la commande ne revient qu'après la mort du processus, vous pouvez le faire en utilisant le -w option de ligne de commande, qui force killall à attendre.
killall -w [process-name]
Voici comment la page de manuel décrit cette option :
-w, --wait
Wait for all killed processes to die. killall checks once per
second if any of the killed processes still exist and only
returns if none are left. Note that killall may wait forever if
the signal was ignored, had no effect, or if the process stays
in zombie state.
Conclusion
Killall n'est peut-être pas une promenade de santé pour les débutants, mais ce n'est pas non plus très complexe. Vous devez pratiquer les options de ligne de commande qu'il propose. Nous avons discuté de la majorité d'entre eux, donc ce tutoriel devrait être un bon point de départ. Une fois que vous avez terminé, vous pouvez en savoir plus sur la commande en vous rendant sur sa page de manuel.