Как прекратить пинг <dest> &

9

Команда

ping <dest> &

заставляет пинг перейти на задний план. Однако он по-прежнему печатает вывод на терминал. Ctrl-C не останавливает это, только вводит новое приглашение. Как остановить это из терминала?

Vineet
источник
В дополнение к ответам, существует способ естественного ограничения pingитераций с помощью счетчика, -c Nгде N - положительное число.
10
1
@ l0b0 Да, правда, но я столкнулся с этой конкретной проблемой, и она на самом деле связана с любой программой, в которой мы можем не знать время выполнения или даже не определять его. Поэтому я хочу спросить, как остановить процесс.
Vineet

Ответы:

24

Сначала войдите fgв тот же терминал, в котором работает ваша pingкоманда (он выводит процесс на передний план), затем нажмите Ctrl+, cчтобы остановить процесс.

введите описание изображения здесь

Ravexina
источник
Это работает. Я также понял, что fg работает, если у нас есть несколько фоновых процессов, вызывая их на первый план один за другим.
Vineet
Да, вот как это работает, вы можете использовать, jobsчтобы получить список процессов, которые выполняются в фоновом режиме.
Равексина
Как вы сделали этот цикл изображения?
phillipsk
3
@phillipsk Это GIF, вот как GIF работает ...
Ravexina
1
@ Сидит Ох ... в этом случае я снял видео с помощью «Kazam», а затем преобразовал его в GIF с помощью ffmpeg.
Равексина
14

Если это ваша единственная фоновая работа, вы можете убить ее kill %1. Если вы не уверены, что можете перечислить все свои фоновые задания jobsи использовать их, kill %<n>где вы замените n номером вашей проверки связи.

muclux
источник
4
Также я обнаружил, что n соответствует числу, которое выводится в квадратных скобках при запуске команды.
Vineet
7

При отправке процесса на задний план, будь то с помощью ctrl- zили &в конце команды, вы получите выход в следующем формате: [index] process-id. Если вы отправите несколько процессов в фоновый режим, индекс будет увеличиваться каждый раз.

Например:

$ 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

Чтобы остановить определенный, вы можете использовать kill <process-id>или использовать, fg <index>а затем ctrl-c

Пример использования предыдущего вывода:

$ kill 41614

или

$ fg 7
sleep 106
^C
Дэн
источник
3

Запустите новую вкладку терминала, запустите:

$ pgrep ping
  2564

Затем убейте pid с помощью killкоманды:

$ kill 2564
Лисо
источник
Я использовал kill в том же терминале (хотя вывод затруднил использование). Однако мне было интересно, что делать, если я не смог далеко зайти в терминал, чтобы увидеть напечатанный идентификатор процесса, поэтому pgrep также помог.
Vineet
3
Когда вы используете pgrepдля поиска процессов по имени, вы также можете использовать pkillдля уничтожения их по имени. Нет необходимости вводить / копировать идентификатор процесса и использовать kill.
Байт Командующий
Это полезно знать, но для этого вопроса это немного излишне . :-p
Tu-Reinstate Monica-dor duh
0

Когда вы root, это просто killall ping.

Сим сын
источник
Спасибо за то, что убил мой сеанс пинга, я работал на той же машине - коллега
Оскар
0

Немного другой подход к непрерывному пингу заключается в использовании опции -c и вводе количества раз, которое вы хотите, чтобы он выполнялся, таким образом, он остановится сам после желаемого количества, т.е. ниже пинга остановится после 100 пингов

ping -c 100 192.168.1.1 &

Ibraheem
источник
0

Просто используйте:

kill -9 %%

и это убьет текущий фоновый процесс, который вы запускаете.

Arturo
источник
0

Вы можете увидеть весь процесс, который вы поместили в фоновом режиме (для текущего сеанса) с помощью jobsкоманды. После выполнения этой команды вы увидите все процессы, которые выполняются в текущем bash, а в левой части каждого процесса вы можете увидеть некоторые цифры:

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

Вы можете просто завершить задания (процессы), используя kill -15 n%(n - это число, которое находится в знаке [[])

-15предназначен для успешного завершения процесса, если вы хотите принудительно закрыть процесс, просто используйте -9вместо -15 PS: очевидно, что если вы запускаете команду с привилегиями root, вы должны запускать kill -15 n%сsudo

2) Вы можете увидеть все процессы, запущенные в системе, ps -auxи увидеть ping:

ps -aux | grep ping 

Вывод как:

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

Второе число (2615) - это PID или ID процесса, и вы можете завершить процесс с помощью

sudo kill -15 2615
Afshin
источник