15/11/2024

Commandes et Système

Tuer un processus en ligne de commande sous Linux

I. Présentation

Sous Linux, certains processus sont coriaces ! C'est notamment le cas des processus buggués ou mal codés qui refusent de se fermer lors d'une extinction ou quand ils sont tout simplement freezés. Une procédure très simple et rapide existe néanmoins pour les tuer et mettre fin à leur exécution, et elle marche à tous les coups !

II. Repérer le PID avec ps

Dans un premier temps, il faut récupérer le PID c'est à dire le "Processus Identifier", c'est un numéro associé à un processus et qui permet de l'identifier de façon unique. On utilise pour cela la commande "ps"  (pour "process snapshot" selon la manpage de la commande : "ps - report a snapshot of the current processes.", merci à @AlineKav pour l'info). Enfin bref, admettons que je souhaite récupérer le PID du processus nginx, je saisirai la commande suivante :

ps -edf |grep "nginx

Voila le résultat que vous pourrez avoir :

Kill_Linux_01

On voit donc que le PID du processus Nginx pour cet instant est "2895". Attention, au prochain démarrage du processus nginx, le PID aura changé, ce n'est pas quelque chose de fixe entre plusieurs démarrages, d'où l’intérêt de savoir le récupérer. On voit également ici que notre commande de recherche du processus nginx renvoie plusieurs processus. Bien que l'on puisse identifier le processus maître (celui ayant lancé les autres instances) par son nom dans la dernière colonne ("master process"), ce n'est pas toujours le cas suivant les processus.

Note : Une astuce pour identifier un processus principal (celui à tuer pour tuer les autres) est de regarder la troisième colonne qui indique quel PID a lancé le processus en question. Ici "1" est le processus racine de la machine Linux, les autres processus ont comme PID parent le PID du processus maître, ce qui est logique ;).

III. Tuez les tous avec kill

Maintenant que nous avons notre cible, il ne reste plus qu'à la tuer, on utilise pour cela la commande "kill" qui porte bien son nom avec l'option "-9"  et suivi du PID à tuer :

kill -9 2895

Le processus est maintenant éteint. On peut également pour ceux qui le désirent mettre plusieurs PID à la suite de l'option "-9".

author avatar
Mickael Dorigny Co-founder
Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

2 commentaires sur “Tuer un processus en ligne de commande sous Linux

  • Plus rapide :

    kill -9 $(top -n1 -b | grep NomDuPrecessus | cut -c1-6)

    Mais merci !

    Répondre
  • Bonjour a tous,

    J’ai l ‘ erreur suivante :
    root@Debian:/home/andre# apt-get dist-upgrade
    Lecture des listes de paquets… Fait
    Construction de l’arbre des dépendances
    Lecture des informations d’état… Fait
    Calcul de la mise à jour… Fait
    0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
    1 partiellement installés ou enlevés.
    Après cette opération, 0 o d’espace disque supplémentaires seront utilisés.
    Souhaitez-vous continuer ? [O/n]
    Paramétrage de usb-imagewriter (0.1.3-7) …
    chown: utilisateur incorrect: « iurt:iurt »
    chown: utilisateur incorrect: « iurt:iurt »
    chown: utilisateur incorrect: « iurt:iurt »
    chown: utilisateur incorrect: « iurt:iurt »
    dpkg: erreur de traitement du paquet usb-imagewriter (–configure) :
    le sous-processus script post-installation installé a retourné une erreur de sortie d’état 1
    Des erreurs ont été rencontrées pendant l’exécution :
    usb-imagewriter
    E: Sub-process /usr/bin/dpkg returned an error code (1)
    comment puis-je arreter ce sous processus ?

    en vous remerciant de vos réponse, merci

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.