Comment terminer ping <dest> &

9

La commande

ping <dest> &

provoque le ping à l'arrière-plan. Cependant, il imprime toujours la sortie vers le terminal. Ctrl-C ne l'arrête pas, introduit seulement une nouvelle invite. Comment l'arrêter du terminal?

Vineet
la source
En plus des réponses, il existe un moyen de limiter naturellement pingles itérations avec un nombre - -c N- où N est un nombre positif.
l0b0
1
@ l0b0 Oui, vrai, mais j'ai rencontré ce problème particulier, et il est en fait lié à n'importe quel programme où nous ne connaissons peut-être pas le temps d'exécution, ou où il pourrait même ne pas être défini. Je veux donc demander comment arrêter le processus.
Vineet

Réponses:

24

Entrez d'abord fgdans le même terminal que votre pingcommande est en cours d'exécution (il met le processus au premier plan), puis appuyez sur Ctrl+ cpour arrêter le processus.

entrez la description de l'image ici

Ravexina
la source
Cela marche. J'ai également réalisé que fg fonctionne si nous avons plusieurs processus d'arrière-plan, en les appelant un par un au premier plan.
Vineet
Oui, c'est ainsi que cela fonctionne, vous pouvez utiliser jobspour obtenir une liste des processus qui s'exécutent en arrière-plan.
Ravexina
Comment avez-vous fait cette boucle d'image?
phillipsk
3
@phillipsk C'est GIF, c'est comme ça que GIF fonctionne ...
Ravexina
1
@Seth Oh ... dans ce cas, j'ai capturé la vidéo en utilisant "Kazam" puis je l'ai convertie en gif en utilisant ffmpeg.
Ravexina
14

Si c'est votre seul et unique travail d'arrière-plan, vous pouvez le tuer avec kill %1. Si vous n'êtes pas sûr, vous pouvez répertorier tous vos travaux d'arrière-plan avec jobset utiliser kill %<n>où vous remplacez n par le numéro de votre travail ping.

muclux
la source
4
En outre, j'ai découvert que n correspond au nombre qui est imprimé entre crochets lors de l'exécution de la commande.
Vineet
7

Lorsque vous envoyez un processus à l'arrière - plan, que ce soit à l'aide ctrl- zou &à la fin de la commande, vous obtenez une sortie dans le format suivant: [index] process-id. Si vous envoyez plusieurs processus en arrière-plan, l'index continuera à incrémenter à chaque fois.

Par exemple:

$ sleep 100 &
[1] 41608
$ sleep 101 &
[2] 41609
$ sleep 102 &
[3] 41610
$ sleep 103 &
[4] 41611
$ sleep 104 &
[5] 41612
$ sleep 105 &
[6] 41613
$ sleep 106 &
[7] 41614

Pour en arrêter un spécifique, vous pouvez utiliser kill <process-id>ou utiliser fg <index>suivi de ctrl-c

Exemple utilisant la sortie précédente:

$ kill 41614

ou

$ fg 7
sleep 106
^C
Dan
la source
3

Lancez un nouvel onglet de terminal, lancez:

$ pgrep ping
  2564

Ensuite, tuez le pid en utilisant la killcommande:

$ kill 2564
Liso
la source
J'ai également utilisé kill dans le même terminal (bien que la sortie le rende difficile à utiliser). Cependant, je me demandais quoi faire si je ne pouvais pas remonter loin dans le terminal pour voir l'ID du processus imprimé, donc pgrep a aidé, en plus.
Vineet
3
Lorsque vous utilisez pgreppour rechercher des processus par nom, vous pouvez également utiliser pkillpour les tuer par nom. Pas besoin de taper / copier l'ID du processus et de l'utiliser kill.
Byte Commander
C'est utile à savoir, mais pour cette question c'est un peu exagéré . :-p
tu-Reinstate Monica-dor duh
0

Lorsque vous êtes root, c'est tout simplement killall ping.

Sim Son
la source
Merci d'avoir tué ma session de ping que je courais sur la même machine - un collègue
Oscar
0

L'approche légèrement différente vers un ping continu consiste à utiliser l'option -c et à entrer le nombre de fois que vous voulez qu'il s'exécute, de cette façon, il s'arrêtera après le décompte souhaité, c'est-à-dire que le ping ci-dessous s'arrêtera après 100 pings

ping -c 100192.168.1.1 &

Ibraheem
la source
0

Utilisez simplement:

kill -9 %%

et il tuera le processus d'arrière-plan actuel que vous exécutez.

Arturo
la source
0

Vous pouvez voir tous les processus que vous mettez en arrière-plan (pour la session en cours) avec la jobscommande Après avoir exécuté cette commande, vous verrez tous les processus qui s'exécutent sur le bash actuel et sur le côté gauche de chaque processus, vous pouvez voir quelques chiffres:

[1]-  Running                 sleep 200000 &
[2]+  Running                 sleep 300000 &

Vous pouvez simplement terminer des travaux (processus) en utilisant kill -15 n%(n est un nombre qui est dans le signe [[])

-15est pour terminer le processus bien, si vous voulez forcer la fermeture du processus, utilisez simplement à la -9place de -15 PS: Il est évident que si vous exécutez une commande avec le privilège root, vous devez exécuter kill -15 n%avecsudo

2) Vous pouvez voir tous les processus en cours d'exécution sur le système avec ps -auxet pour voir ping:

ps -aux | grep ping 

La sortie est comme:

root     2615  0.0  0.0  25828  1052 pts/0    S    02:12   0:00 ping 8.8.8.8

Le deuxième numéro (2615) est PID ou ID de processus et vous pouvez terminer le processus avec

sudo kill -15 2615
Afshin
la source