Como finalizar o ping <dest> &

9

O comando

ping <dest> &

faz com que o ping vá para o segundo plano. No entanto, ele ainda imprime a saída no terminal. Ctrl-C não o interrompe, apenas apresenta um novo prompt. Como pará-lo do terminal?

Vineet
fonte
Além das respostas, existe uma maneira de limitar naturalmente pingas iterações com uma contagem -c N- onde N é um número positivo.
L0b0 15/03/19
11
@ l0b0 Sim, é verdade, mas enfrentei esse problema em particular e está realmente relacionado a qualquer programa em que talvez não saibamos o tempo de execução ou em que ele nem possa ser definido. Então, eu quero perguntar como parar o processo.
Vineet

Respostas:

24

Primeiro, entre fgno mesmo terminal em que seu pingcomando está sendo executado (ele traz o processo para o primeiro plano) e, em seguida, pressione Ctrl+ cpara interromper o processo.

insira a descrição da imagem aqui

Ravexina
fonte
Isso funciona. Também percebi que o fg funciona se tivermos vários processos em segundo plano, chamando-os para o primeiro plano, um por um.
Vineet
Sim, é assim que funciona, você pode usar jobspara obter uma lista de processos em execução em segundo plano.
Ravexina 15/03/19
Como você fez esse loop de imagem?
Phillipsk
3
@phillipsk É do GIF, que é como GIF funciona ...
Ravexina
11
@ Oh Oh ... nesse caso, capturei o vídeo usando "Kazam" e depois o converti em gif usando ffmpeg.
Ravexina 26/03/19
14

Se é o seu primeiro e único trabalho em segundo plano, você pode matá-lo kill %1. Se não tiver certeza, pode listar todos os seus trabalhos em segundo plano jobse usar kill %<n>onde substitui n pelo número do seu trabalho de ping.

muclux
fonte
4
Além disso, descobri que n corresponde ao número que é impresso entre colchetes ao executar o comando.
Vineet
7

Quando você envia um processo para o fundo, seja através da utilização ctrl- zou &no final do comando, você recebe uma saída no seguinte formato: [index] process-id. Se você enviar vários processos para o plano de fundo, o índice continuará aumentando sempre.

Por exemplo:

$ 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

Para interromper um específico, você pode usar kill <process-id>ou usar fg <index>seguido por ctrl-c

Exemplo usando a saída anterior:

$ kill 41614

ou

$ fg 7
sleep 106
^C
Dan
fonte
3

Inicie uma nova guia do terminal, execute:

$ pgrep ping
  2564

Então mate o pid usando o killcomando:

$ kill 2564
Liso
fonte
Também usei kill no mesmo terminal (embora a saída tenha dificultado o uso). No entanto, eu queria saber o que fazer se não pudesse voltar no terminal para ver a identificação do processo impressa, portanto o pgrep também ajudou.
Vineet
3
Quando você usa pgreppara pesquisar processos por nome, também pode usá pkill-los para matá-los por nome. Não há necessidade de digitar / copiar a identificação do processo e usar kill.
Byte Commander
É útil saber, mas para esta pergunta é um pouco exagerado . :-p
Monica-dor
0

Quando você é root, é simplesmente killall ping.

Sim Filho
fonte
Obrigado por matar minha sessão de ping eu estava correndo na mesma máquina - um colega de trabalho
Oscar
0

Uma abordagem ligeiramente diferente em relação a um ping contínuo é usar a opção -c e digitar o número de vezes que você deseja que ele seja executado, para que ele pare após a contagem desejada, ou seja, abaixo do ping será interrompido após 100 pings

ping -c 100 192.168.1.1 &

Ibraheem
fonte
0

Apenas use:

kill -9 %%

e isso matará o atual processo em segundo plano que você está executando.

Arturo
fonte
0

Você pode ver todo o processo que você coloca em segundo plano (para a sessão atual) com o jobscomando Depois de executar este comando, você verá todo o processo em execução no bash atual e no lado esquerdo de cada processo, você pode ver alguns números:

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

Você pode simplesmente encerrar tarefas (processos) usando kill -15 n%(n é um número que está em [[])

-15é para finalizar bem o processo, se você deseja forçar o fechamento do processo, basta usar em -9vez do -15 PS: é óbvio que se você executar um comando com privilégio de root, precisará executar kill -15 n%comsudo

2) Você pode ver todo o processo em execução no sistema com ps -auxe para ver ping:

ps -aux | grep ping 

A saída é como:

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

O segundo número (2615) é PID ou ID do processo e você pode finalizar o processo com

sudo kill -15 2615
Afshin
fonte