Come terminare il ping <dest> &


9

Il comando

ping <dest> &

fa sì che il ping vada in background. Stampa comunque l'output sul terminale, tuttavia. Ctrl-C non lo interrompe, introduce solo un nuovo prompt. Come fermarlo dal terminale?


Oltre alle risposte, esiste un modo per limitare naturalmente pingle iterazioni con un conteggio - -c N- dove N è un numero positivo.
l0b0

1
@ l0b0 Sì, vero, ma ho riscontrato questo particolare problema, ed è in realtà correlato a qualsiasi programma in cui potremmo non conoscere il tempo di esecuzione o dove potrebbe non essere nemmeno definito. Quindi intendo chiedere come fermare il processo.
Vineet

Risposte:


24

Prima entra fgnello stesso terminale in cui pingè in esecuzione il tuo comando (porta il processo in primo piano), quindi premi Ctrl+ cper interrompere il processo.

inserisci qui la descrizione dell'immagine


Questo funziona Mi sono anche reso conto che fg funziona se abbiamo più processi in background, chiamandoli in primo piano uno per uno.
Vineet

Sì, è così che funziona, è possibile utilizzare jobsper ottenere un elenco di processi in esecuzione in background.
Ravexina,

Come hai fatto a girare quell'immagine?
phillipsk

3
@phillipsk È GIF, è così che funziona GIF ...
Ravexina

1
@Seth Oh ... in quel caso, ho catturato il video usando "Kazam" e poi l'ho convertito in GIF usando ffmpeg.
Ravexina,

14

Se è il tuo unico e solo lavoro in background puoi ucciderlo kill %1. In caso di dubbi, è possibile elencare tutti i processi in background jobse utilizzare kill %<n>dove si sostituisce n con il numero del processo ping.


4
Inoltre, ho scoperto che n corrisponde al numero stampato tra parentesi quadre durante l'esecuzione del comando.
Vineet

7

Quando si invia un processo per lo sfondo, sia utilizzando ctrl- zo &alla fine del comando, si ottiene un output nel seguente formato: [index] process-id. Se si inviano più processi in background, l'indice continuerà ad aumentare ogni volta.

Per esempio:

$ 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

Per interrompere uno specifico, è possibile utilizzare kill <process-id>o utilizzare fg <index>seguito da ctrl-c

Esempio usando l'output precedente:

$ kill 41614

o

$ fg 7
sleep 106
^C

3

Avvia una nuova scheda del terminale, esegui:

$ pgrep ping
  2564

Quindi uccidi il pid usando il killcomando:

$ kill 2564

Ho usato anche kill nello stesso terminale (sebbene l'output lo rendesse difficile da usare). Tuttavia, mi chiedevo cosa fare se non potevo tornare indietro nel terminale per vedere l'ID del processo stampato, quindi pgrep ha aiutato, inoltre.
Vineet

3
Quando usi pgrepper cercare i processi per nome, puoi anche usarli pkillper ucciderli per nome. Non è necessario digitare / copiare l'id del processo e utilizzarlo kill.
Byte comandante

Questo è utile da sapere, ma per questa domanda è un po ' eccessivo . :-p
tu-Reinstate Monica-dor duh

0

Quando sei root, è semplicemente killall ping.


Grazie per aver ucciso la mia sessione di ping, stavo correndo sulla stessa macchina - un collega
Oscar

0

Un approccio leggermente diverso nei confronti di un ping continuo consiste nell'utilizzare l'opzione -c e immettere il numero di volte in cui si desidera che venga eseguito, in questo modo si arresterà automaticamente dopo il conteggio desiderato, ovvero sotto il ping si fermerà dopo 100 ping

ping -c 100 192.168.1.1 e


0

Usa solo:

kill -9 %%

e ucciderà l'attuale processo in background che stai eseguendo.


0

Puoi vedere tutto il processo che hai messo in background (per la sessione corrente) con il jobscomando Dopo aver eseguito questo comando vedrai tutti i processi che sono in esecuzione sulla bash corrente e sul lato sinistro di ogni processo puoi vedere alcuni numeri:

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

Puoi semplicemente terminare i lavori (processi) usando kill -15 n%(n è un numero che è nel segno [[])

-15serve per terminare bene il processo, se si desidera forzare la chiusura del processo, basta usare al -9posto di -15 PS: è ovvio se si esegue un comando con privilegio di root, è necessario eseguire kill -15 n%consudo

2) Puoi vedere tutto il processo in esecuzione sul sistema con ps -auxe per vedere ping:

ps -aux | grep ping 

L'output è simile a:

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

Il secondo numero (2615) è PID o ID processo ed è possibile terminare il processo con

sudo kill -15 2615
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.