Jak zakończyć ping <test> i

9

Komenda

ping <dest> &

powoduje przejście ping do tła. Jednak nadal drukuje dane wyjściowe na terminalu. Ctrl-C nie zatrzymuje tego, wprowadza tylko nowy monit. Jak zatrzymać go z terminala?

Vineet
źródło
Oprócz odpowiedzi istnieje sposób na naturalne ograniczenie pingiteracji za pomocą liczby -c N- gdzie N jest liczbą dodatnią.
l0b0
1
@ l0b0 Tak prawda, ale napotkałem ten konkretny problem i jest on w rzeczywistości związany z każdym programem, w którym możemy nie znać czasu wykonania lub w którym nie można go nawet zdefiniować. Chciałbym więc zapytać, jak zatrzymać proces.
Vineet 15.03.19

Odpowiedzi:

24

Najpierw wejdź fgdo tego samego terminala, na którym pingdziała twoje polecenie (przenosi proces na pierwszy plan), a następnie naciśnij Ctrl+, caby zatrzymać proces.

wprowadź opis zdjęcia tutaj

Ravexina
źródło
To działa. Uświadomiłem sobie również, że fg działa, jeśli mamy wiele procesów w tle, wywołując je kolejno na pierwszym planie.
Vineet 15.03.19
Tak, tak to działa, możesz użyć, jobsaby uzyskać listę procesów działających w tle.
Ravexina,
Jak stworzyłeś ten obraz?
Phillipsk
3
@phillipsk To GIF, tak działa GIF ...
Ravexina
1
@Seth Oh ... w takim przypadku nagrałem wideo za pomocą „Kazam”, a następnie przekonwertowałem je na gif za pomocą ffmpeg.
Ravexina
14

Jeśli jest to twoja jedyna praca w tle, możesz ją zabić kill %1. Jeśli nie masz pewności, możesz wyświetlić listę wszystkich zadań w tle jobsi użyć, kill %<n>gdzie zamieniasz n przez liczbę zadań pingowania.

śluz
źródło
4
Odkryłem też, że n odpowiada liczbie wydrukowanej w nawiasach kwadratowych podczas uruchamiania polecenia.
Vineet 15.03.19
7

Po wysłaniu proces w tle, czy za pomocą ctrl- zlub &na końcu polecenia, można uzyskać wyjście w następującym formacie: [index] process-id. Jeśli wyślesz wiele procesów w tło, indeks będzie się zwiększał za każdym razem.

Na przykład:

$ 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

Aby zatrzymać konkretny, możesz użyć kill <process-id>albo użyć, fg <index>a następnie ctrl-c

Przykład z wykorzystaniem poprzedniego wyniku:

$ kill 41614

lub

$ fg 7
sleep 106
^C
Dan
źródło
3

Uruchom nową kartę terminala, uruchom:

$ pgrep ping
  2564

Następnie zabij pid za pomocą killpolecenia:

$ kill 2564
Liso
źródło
Użyłem również kill w tym samym terminalu (chociaż wyjście utrudniało korzystanie). Zastanawiałem się jednak, co zrobić, gdybym nie mógł wrócić daleko do terminala, aby zobaczyć wydrukowany identyfikator procesu, więc pgrep dodatkowo pomógł.
Vineet
3
Kiedy używasz pgrepdo wyszukiwania procesów według nazwy, możesz także użyć pkilldo ich zabicia według nazwy. Nie trzeba wpisywać / kopiować identyfikatora procesu i używać kill.
Bajt Dowódca
Warto wiedzieć, ale w przypadku tego pytania jest to trochę przesada . :-p
tu-
0

Kiedy jesteś rootem, to po prostu killall ping.

Sim Son
źródło
Dzięki za zabicie mojej sesji ping Uruchomiłem na tej samej maszynie - współpracownik
Oscar
0

Nieco inne podejście do ciągłego pingowania polega na użyciu opcji -c i wprowadzeniu czasu, przez który ma on działać, w ten sposób zatrzyma się po pożądanej liczbie, tj. Poniżej ping zatrzyma się po 100 pingach

ping -c 100 192.168.1.1 i

Ibraheem
źródło
0

Po prostu użyj:

kill -9 %%

i zabije bieżący proces w tle, który uruchamiasz.

Arturo
źródło
0

Możesz zobaczyć cały proces, który umieściłeś w tle (dla bieżącej sesji) za pomocą jobspolecenia Po uruchomieniu tego polecenia zobaczysz cały proces, który działa na bieżącym bashu, a po lewej stronie każdego procesu możesz zobaczyć kilka liczb:

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

Możesz po prostu zakończyć zadania (procesy), używając kill -15 n%(n to liczba, która jest w znaku [[])

-15jest do ładnego zakończenia procesu, jeśli chcesz wymusić zamknięcie procesu, po prostu użyj -9zamiast -15 PS: Oczywiste jest, że jeśli uruchomisz polecenie z uprawnieniami roota, musisz uruchomić kill -15 n%zsudo

2) Możesz zobaczyć cały proces, który jest uruchomiony w systemie ps -auxi zobaczyć ping:

ps -aux | grep ping 

Dane wyjściowe są następujące:

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

Druga liczba (2615) to PID lub identyfikator procesu i proces można zakończyć za pomocą

sudo kill -15 2615
Afshin
źródło