Pour tuer un processus Linux, vous avez besoin de son identifiant 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 des processus
Parfois un Processus linux peut devenir insensible. Il peut arrêter de fonctionner correctement, ou il peut continuer à fonctionner mais ignorer les demandes de s'arrêter ou de commencer à engloutir la mémoire, CPU , ou bande passante du réseau.
Quels que soient vos motifs, il existe des moyens de tuer un processus de la ligne de commande Linux. La méthode classique consiste à utiliser le
tuer la commande avec l'ID de processus
du processus que vous souhaitez terminer. Le
tuer
La commande a des parents proches. Le
pkill
la commande tuera un processus par son nom, et
tuer tous
tuera tous les processus qu'il peut trouver qui partage une partie d'un nom.
Si tout ce que vous savez sur un processus est qu'il utilise un port sur votre ordinateur, il existe encore des moyens de l'identifier et de le tuer. En termes de réseautage, «port» peut signifier une connexion physique dans laquelle vous insérez un câble avec une prise à l'extrémité, comme un Cat5 ou 6 Network Lead , ou cela peut signifier un port logiciel.
Un port logiciel est la dernière partie d'une connexion réseau. Le adresse IP d'un appareil identifie l'ordinateur ou tout autre appareil réseau. Les applications à l'intérieur de l'ordinateur utilisent différents ports. Ceux-ci fournissent un autre niveau de granularité. Le trafic réseau est arrivé sur le bon ordinateur à l'aide de l'adresse IP, et en utilisant l'adresse du port, il peut être livré à l'application correcte.
C'est comme un courrier postal arrivant dans un hôtel, puis être trié et livré dans les chambres appropriées. L'adresse IP est comme l'adresse de la rue de l'hôtel, et les numéros de chambre sont comme les numéros de port.
Si vous voyez une activité de 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 voudrez peut-être tuer 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éer des connexions avec Socat
Pour que nous ayons des liens à 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:
La syntaxe pour
socat
est simple s'il est un peu long. Nous devons fournir les adresses source et de destination. Pour chacun d'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 une prise d'écoute TCP sur le port 7889, sur l'adresse IP de Loopback de 127.0.0.1, et stdout. L'Ampersand "
& amp;
"
Exécute la commande en arrière-plan
, pour que nous consertions l'accès à la ligne de commande.
Nous allons créer deux autres connexions afin que nous ayons une petite sélection de sockets en utilisant différents protocoles. Nous allons créer un Connexion UDP Et un Connexion SCTP . La seule partie de la commande qui change est le protocole.
Utilisation de Kill
Bien sûr, nous pouvons utiliser
tuer
Pour terminer le processus, tant que nous savons quel est l'identification du processus. Pour trouver le PID, nous pouvons utiliser
le
lsof
commande
.
Pour répertorier les détails du processus sur le port 7889 qui utilisent le protocole TCP, nous utilisons le
-je
(Adresse Internet) Option, comme ceci.
Le PID de ce processus est 3141, et nous pouvons aller de l'avant et l'utiliser avec
tuer
:
Nous pouvons nous épargner des efforts si nous utilisons des tuyaux. Si nous tumons la sortie de
lsof
dans
awk
et
dire
awk
Pour rechercher des lignes qui contiennent le port qui nous intéresse - 7889 - et imprimez le deuxième champ de cette ligne, nous isolerons le PID.
Nous pouvons ensuite tuer la sortie de
awk
dans le
tuer
commande en utilisant
xargs
. Le
xargs
La commande prend son entrée tuyaux et la passe à une autre commande
comme paramètres de ligne de commande
. Nous utiliserons
xargs
avec le
tuer
commande.
Nous n'obtenons aucun commentaire visuel. À la manière typique de Linux, aucune nouvelle n'est une bonne nouvelle. Si vous souhaitez vérifier que le processus a été résilié, vous pouvez utiliser
lsof
une fois de plus.
Parce que
lsof
Ne signale rien, nous savons qu'il n'y a pas de lien de ce type.
Nous pouvons supprimer un processus en utilisant le protocole UDP simplement en remplaçant «TCP» par «UDP» dans notre commande précédente.
On peut utiliser
le
SS
commande
pour faire ça. Nous utilisons le
-S
(SCTP) Option pour rechercher des sockets SCTP, le
-un
(all) Option pour rechercher tous les types de sockets (écouter, accepter, connecté, etc.), et le
-p
(Processus) Option pour répertorier les détails du processus à l'aide de la prise.
Nous pouvons analyser cette sortie en utilisant
grep
et
awk
. Nous pourrions également l'analyser en utilisant
grep
Et certains regex perl, mais cette façon est beaucoup plus facile à comprendre. Si vous deviez l'utiliser plus d'une ou deux fois, vous feriez probablement un
alias ou fonction shell
en dehors de ça.
Nous allons tuer la sortie de
SS
dans
grep
et rechercher notre numéro de port, 7889. Nous allons tuer la sortie depuis
grep
dans
awk
. Dans
awk
, nous utilisons le
-F
(Séparateur String) Option pour définir une virgule "
,
»Comme délimiteur de champ. Nous recherchons une chaîne
contenant
«PID =», et imprimez le deuxième champ dédié à des virgules de cette chaîne.
Nous pouvons
tuyau
que dans
awk
Encore une fois, définissez le délimiteur de champ sur le signe égal «
=
»Et imprimez le deuxième champ de
ce
String, qui sera le texte derrière le signe égal.
Nous avons maintenant isolé l'ID de processus. On peut utiliser
xargs
pour passer le pid à
tuer
comme paramètre de ligne de commande.
Cela tue le processus qui utilisait la prise de protocole SCTP sur le port 7889.
La commande de fusion
Le
fusion
La commande simplifie beaucoup les choses. L'inconvénient est qu'il fonctionne uniquement avec
TCP et UDP
prises. Du côté positif, ce sont les deux types de sockets les plus courants que vous devrez faire face. Le
fusion
La commande a déjà été installée sur les ordinateurs Ubuntu, Fedora et Manjaro que nous avons vérifiés.
Tout ce que vous avez à faire est d'utiliser le
-K
(tuer) l'option et fournir le port et le protocole. Vous pouvez soit utiliser le
-n
(Espace de noms) Option et fournissez le protocole et le port, ou utilisez le «format de raccourci de barre oblique vers l'avant» et placez d'abord le numéro de port.
Le numéro de port, le protocole et le PID du processus terminé sont imprimés dans la fenêtre du terminal.
Essayez d'abord le fusion
Il sera probablement installé sur l'ordinateur sur lequel vous travaillez, et le protocole est susceptible d'être TCP ou UDP, il y a donc de fortes chances que le moyen le plus simple fonctionne pour vous.
- › Le OnePlus 11 est là, mais avec un début difficile
- › Comment bloquer ou débloquer quelqu'un sur tiktok
- › L'AirPod Pro a une nouvelle concurrence: The OnePlus Buds Pro 2
- › Microsoft Edge obtient un chat IA et un nouveau look sur Windows
- › Les meilleurs écouteurs pour les fans d'iPhone atteignent leur prix le plus bas
- › Microsoft transforme Bing en un moteur de recherche AI