So beenden Sie ping <dest> &

9

Der Befehl

ping <dest> &

bewirkt, dass Ping in den Hintergrund tritt. Die Ausgabe wird jedoch weiterhin an das Terminal gedruckt. Strg-C stoppt es nicht, sondern führt nur eine neue Eingabeaufforderung ein. Wie kann ich es vom Terminal aus stoppen?

Vineet
quelle
Zusätzlich zu den Antworten gibt es eine Möglichkeit, die pingIterationen auf natürliche Weise mit einer Zählung zu begrenzen - -c N- wobei N eine positive Zahl ist.
10.
1
@ l0b0 Ja, stimmt, aber ich war mit diesem speziellen Problem konfrontiert, und es hängt tatsächlich mit jedem Programm zusammen, bei dem wir die Ausführungszeit möglicherweise nicht kennen oder bei dem es möglicherweise nicht einmal definiert ist. Ich möchte also fragen, wie der Prozess gestoppt werden kann.
Vineet

Antworten:

24

Geben Sie zuerst fgdasselbe Terminal ein, auf dem Ihr pingBefehl ausgeführt wird (es rückt den Prozess in den Vordergrund), und drücken Sie dann Ctrl+ c, um den Prozess zu stoppen.

Geben Sie hier die Bildbeschreibung ein

Ravexina
quelle
Das funktioniert. Ich erkannte auch, dass fg funktioniert, wenn wir mehrere Hintergrundprozesse haben, indem ich sie einzeln in den Vordergrund rufe.
Vineet
Ja, so funktioniert es. Sie können jobseine Liste der Prozesse abrufen, die im Hintergrund ausgeführt werden.
Ravexina
Wie haben Sie diese Bildschleife erstellt?
Phillipsk
3
@phillipsk Es ist GIF, so funktioniert GIF ...
Ravexina
1
@ Seth Oh ... in diesem Fall habe ich das Video mit "Kazam" aufgenommen und es dann mit "gif" konvertiert ffmpeg.
Ravexina
14

Wenn es Ihr einziger Hintergrundjob ist, können Sie ihn töten kill %1. Wenn Sie nicht sicher sind, können Sie alle Ihre Hintergrundjobs auflisten jobsund dort verwenden, kill %<n>wo Sie n durch die Nummer Ihres Ping-Jobs ersetzen.

Muclux
quelle
4
Außerdem habe ich herausgefunden, dass n mit der Zahl übereinstimmt, die beim Ausführen des Befehls in eckigen Klammern angegeben wird.
Vineet
7

Wenn Sie einen Prozess in den Hintergrund senden, sei es mit ctrl- zoder &am Ende des Befehls, erhalten Sie eine Ausgabe im folgenden Format : [index] process-id. Wenn Sie mehrere Prozesse in den Hintergrund senden, wird der Index jedes Mal erhöht.

Zum Beispiel:

$ 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

Um einen bestimmten zu stoppen, können Sie entweder verwenden kill <process-id>oder verwenden, fg <index>gefolgt von ctrl-c

Beispiel mit der vorherigen Ausgabe:

$ kill 41614

oder

$ fg 7
sleep 106
^C
Dan
quelle
3

Starten Sie eine neue Registerkarte des Terminals und führen Sie Folgendes aus:

$ pgrep ping
  2564

Dann töte die PID mit dem killBefehl:

$ kill 2564
Liso
quelle
Ich habe kill auch im selben Terminal verwendet (obwohl die Ausgabe die Verwendung erschwerte). Ich habe mich jedoch gefragt, was ich tun soll, wenn ich im Terminal nicht weit nach oben gehen kann, um die gedruckte Prozess-ID zu sehen. Daher hat pgrep zusätzlich geholfen.
Vineet
3
Wenn Sie pgrepProzesse nach Namen suchen, können Sie sie auch pkillnach Namen beenden. Sie müssen die Prozess-ID nicht eingeben / kopieren und verwenden kill.
Byte Commander
Das ist nützlich zu wissen, aber für diese Frage ist es ein bisschen übertrieben . :-p
tu-Reinstate Monica-dor duh
0

Wenn Sie root sind, ist es einfach killall ping.

Sim Sohn
quelle
Vielen Dank, dass Sie meine Ping-Sitzung beendet haben. Ich lief auf derselben Maschine - einem Kollegen
Oscar
0

Ein etwas anderer Ansatz für einen kontinuierlichen Ping besteht darin, die Option -c zu verwenden und die Häufigkeit einzugeben, mit der er ausgeführt werden soll. Auf diese Weise stoppt er sich nach der gewünschten Anzahl, dh nach 100 Pings

ping -c 100 192.168.1.1 &

Ibraheem
quelle
0

Benutz einfach:

kill -9 %%

und es wird den aktuellen Hintergrundprozess beenden, den Sie ausführen.

Arturo
quelle
0

Sie können alle Prozesse sehen, die Sie mit dem jobsBefehl in den Hintergrund gestellt haben (für die aktuelle Sitzung). Nachdem Sie diesen Befehl ausgeführt haben, sehen Sie alle Prozesse, die auf der aktuellen Bash ausgeführt werden, und auf der linken Seite jedes Prozesses sehen Sie einige Zahlen:

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

Sie können Jobs (Prozesse) einfach mit beenden kill -15 n%(n ist eine Zahl im Zeichen [[]).

-15Prozess schön beendet ist, wenn Sie in der Nähe des Prozesses erzwingen möchten, verwenden Sie einfach -9statt -15 PS: Es ist offensichtlich, wenn Sie einen Befehl mit Root - Rechten ausführen, müssen Sie laufen kill -15 n%mitsudo

2) Sie können alle Prozesse sehen, die auf dem System ausgeführt werden, mit ps -auxund zum Anzeigen von ping:

ps -aux | grep ping 

Die Ausgabe ist wie folgt:

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

Die zweite Nummer (2615) ist PID oder Prozess-ID und Sie können den Prozess mit beenden

sudo kill -15 2615
Afshin
quelle