Comment tuer un processus Linux par numéro de port

0
249
fatmawati achmad zaenuri/Shutterstock.com

Pour tuer un processus Linux, vous avez besoin de son ID ou de son nom. Si tout ce que vous savez est le port qu'il utilise, pouvez-vous toujours le tuer ? Oui, de plusieurs manières différentes.

Tuer les processus

Il peut arriver qu'un processus Linux ne réponde plus. Il peut cesser de fonctionner correctement, ou continuer à fonctionner mais ignorer les demandes d'arrêt ou commencer à engloutir la mémoire, le processeur ou la bande passante du réseau.

RELATEDComment tuer des processus à partir du terminal Linux

Quels que soient vos motifs, il existe des moyens de tuer un processus à partir de la ligne de commande Linux. La méthode classique consiste à utiliser la commande kill avec l'ID de processus du processus que vous souhaitez terminer. La commande kill a des parents proches. La commande pkill tuera un processus par son nom, et killall tuera tous les processus qu'il peut trouver qui partagent une partie d'un nom.

Si tout ce que vous savez d'un processus, c'est qu'il utilise un port sur votre ordinateur, il existe toujours des moyens de l'identifier et de le tuer. En termes de mise en réseau, “port” peut signifier une connexion physique dans laquelle vous insérez un câble avec une prise à l'extrémité, comme un câble réseau CAT5 ou 6, ou cela peut signifier un port logiciel.

Un port logiciel est la dernière partie d'une connexion réseau. L'adresse IP d'un périphérique identifie l'ordinateur ou un autre appareil réseau. Les applications à l'intérieur de l'ordinateur utilisent des ports différents. Ceux-ci offrent un autre niveau de granularité. Le trafic réseau est arrivé au bon ordinateur en utilisant l'adresse IP, et en utilisant l'adressage de port, il peut être livré à la bonne application.

C'est comme un courrier postal arrivant à un hôtel, puis étant triés et livrés dans les salles appropriées. L'adresse IP est comme l'adresse postale de l'hôtel et les numéros de chambre sont comme les numéros de port.

Si vous constatez une activité réseau sur un port et que vous ne reconnaissez pas le processus qui le génère, ou si son comportement est problématique ou suspect, vous souhaiterez peut-être arrêter le processus. Même si tout ce que vous savez est le numéro de port, vous pouvez retrouver le processus et le tuer.

Création de connexions avec socat

Alors que nous avons des connexions à tuer, nous utiliserons socat pour créer des connexions réseau à l'aide de différents protocoles. Vous devrez installer socat . Pour l'installer sur Ubuntu, utilisez cette commande :

sudo apt install socat

Sur Fedora, utilisez dnf :

sudo dnf install socat

Sur Manjaro vous devez taper :

sudo pacman -S socat

La syntaxe de socat est simple bien qu'un peu longue. Nous devons fournir les adresses source et de destination. Pour chacun d'entre eux, nous devons fournir le protocole, l'adresse IP et le numéro de port. Nous pouvons remplacer STDIN ou STDOUT comme source ou destination.

Cette commande crée une connexion entre un socket d'écoute TCP sur le port 7889, sur l'adresse IP de bouclage de 127.0.0.1, et STDOUT. L'esperluette “&” exécute la commande en arrière-plan, afin que nous conservions l'accès à la ligne de commande.

socat tcp-listen:7889,bind=127.0.0.1 stdout &

Nous allons créer deux connexions supplémentaires afin d'avoir une petite sélection de sockets utilisant différents protocoles. Nous allons créer une connexion UDP et une connexion SCTP. La seule partie de la commande qui change est le protocole.

socat udp-listen:7889,bind=127.0.0.1 stdout & socat sctp-listen:9999,bind=127.0.0.1 stdout &

CONNEXE : Quelle est la différence entre TCP et UDP ?

Utiliser Kill

Bien sûr, nous pouvons utiliser kill pour terminer le processus, tant que nous connaissons l'ID du processus. Pour trouver le PID, nous pouvons utiliser la commande lsof.

Pour répertorier les détails du processus sur le port 7889 qui utilise le protocole TCP, nous utilisons l'option -i (adresse Internet), comme celle-ci.

lsof -i tcp:7889

Le PID de ce processus est 3141, et nous pouvons aller devant et utilisez-le avec kill :

sudo kill 3141

Nous pouvons nous épargner des efforts si nous utilisons des tuyaux. Si nous dirigeons la sortie de lsof vers awk et disons à awk de rechercher les lignes contenant le port qui nous intéresse (7889) et d'imprimer le deuxième champ à partir de cette ligne, nous isolerons le PID.

lsof -i tcp:7889 | awk '/7889/{print $2}'

Nous pouvons ensuite diriger la sortie de awk vers la commande kill en utilisant xargs. La commande xargs prend son entrée canalisée et la transmet à une autre commande en tant que paramètres de ligne de commande. Nous allons utiliser xargs avec la commande kill.

lsof -i tcp:7889 | awk '/7889/{print $2}' | xargs kill

Nous n'obtenons aucun retour visuel. À la manière typique de Linux, aucune nouvelle n'est une bonne nouvelle. Si vous voulez vérifier que le processus est terminé, vous pouvez utiliser lsof une fois de plus.

lsof -i tcp:7889

Parce que lsof ne rapporte rien, nous savons qu'il n'y a pas une telle connexion.

Nous pouvons supprimer un processus utilisant le protocole UDP simplement en remplaçant &#8220 ;tcp” avec “udp” dans notre commande précédente.

lsof -i udp:7889 | awk '/7889/{print $2}' | xargs kill

Cependant, lsof ne reconnaît pas le protocole SCTP.

lsof -i scp:7889

Nous pouvons utiliser la commande ss pour le faire. Nous utilisons l'option -S (SCTP) pour rechercher les sockets SCTP, l'option -a (all) pour rechercher tous les types de sockets (écoute, acceptation, connexion, etc.) et l'option -p (processus ) option pour lister les détails du processus utilisant le socket.

ss -Sap

Nous pouvons analyser cette sortie en utilisant grep et awk . Nous pourrions également l'analyser en utilisant grep et certaines expressions rationnelles PERL, mais cette méthode est beaucoup plus facile à comprendre. Si vous deviez l'utiliser plus d'une fois ou deux, vous en feriez probablement un alias ou une fonction shell.

Nous allons diriger la sortie de ss vers grep et rechercher notre numéro de port, 7889. Nous allons diriger la sortie de grep vers awk. Dans awk, nous utilisons l'option -F (chaîne de séparation) pour définir une virgule “,” comme délimiteur de champ. Nous recherchons une chaîne contenant “pid=” et imprimons le deuxième champ délimité par des virgules à partir de cette chaîne.

ss -Sap | grep “7889” | awk -F',' '/pid=/{print $2}'

Cela nous a donné la chaîne “pid=2859.”

Nous pouvons rediriger cela vers awk, définir le délimiteur de champ sur le signe égal “=” et imprimez le deuxième champ de cette chaîne, qui sera le texte derrière le signe égal.

ss-Sap | grep “7889” | awk -F',' '/pid=/{print $2}' | awk -F'=' '{print $2}'

Nous avons maintenant isolé l'ID de processus . Nous pouvons utiliser xargs pour transmettre le PID à tuer en tant que paramètre de ligne de commande.

ss -Sap | grep “7889” | awk -F',' '/pid=/{print $2}' | awk -F'=' '{imprimer $2}' | xargs kill

Cela tue le processus qui utilisait le socket de protocole SCTP sur le port 7889.

< h2 id="la-commande-fuser">La commande fuser

La commande fuser simplifie beaucoup les choses. L'inconvénient est qu'il ne fonctionne qu'avec les sockets TCP et UDP. Du côté positif, ce sont les deux types de prises les plus courants dont vous aurez besoin. La commande fuser était déjà installée sur les ordinateurs Ubuntu, Fedora et Manjaro que nous avons vérifiés.

Tout ce que vous avez à faire est d'utiliser l'option -k (kill) et de fournir le port et le protocole. Vous pouvez soit utiliser l'option -n (espace de noms) et fournir le protocole et le port, soit utiliser le "format de raccourci de barre oblique" et mettez le numéro de port en premier.

fuser -n tcp 7889 fuser 7889/udp

Le port le numéro, le protocole et le PID du processus terminé sont imprimés dans la fenêtre du terminal.

Essayez d'abord fuser

Il sera probablement installé sur l'ordinateur sur lequel vous travaillez, et le protocole est probablement TCP ou UDP, il y a donc de fortes chances que la méthode la plus simple fonctionne pour vous.

LIRE LA SUITE

  • &rsquo ; Comment utiliser la fonction IMAGE dans Microsoft Excel
  • › Nous sommes maintenant à l'ère des appareils photo pour smartphones de 200 mégapixels
  • › Voici tout ce que vous ne saviez pas qu'il y avait un Raspberry Pi
  • › Comment supprimer les bordures dans Microsoft Word
  • › La nouvelle chaise de Cooler Master vibrera avec vos jeux
  • › Modifier l'application de caméra iPhone par défaut avec cette automatisation de raccourci