Come inviare un processo in background e in primo piano?


17

Se lo faccio ping google.com &, il processo passa in secondo piano e continua a mostrarmi i dettagli del ping. Posso ancora usare il terminale con altri comandi, ma l'output del ping e l'output di altri comandi si confondono (il che non è un problema), ma non riesco affatto a terminare questo processo di ping.

Per questo voglio portarlo in primo piano e quindi premere ctrl + c o qualcosa del genere. Ho provato a usare fg, ma non ha funzionato neanche. Quindi, come faccio a ping google.com &tornare in primo piano dopo aver premuto il tasto Invio alla fine del mio comando ping?


2
Sembra che il problema che vuoi veramente risolvere sia uccidere un lavoro in background; non è necessario portarlo in primo piano. Utilizzare jobsper trovare l'ID lavoro jiddel processo in background, quindi fare semplicemente kill %jidper terminarlo.
gardenhead

Risposte:


30

fgè il comando corretto per mettere in primo piano un lavoro, ma se è in esecuzione più di un lavoro è necessario specificare il numero del lavoro. Se si digita solo fg, l'ultimo lavoro in background (considerato il lavoro corrente dalla shell) verrà portato in primo piano.

Ottieni i lavori attuali:

$ jobs
[1]+     ping google.com &

Metti in primo piano il lavoro specificando il numero:

fg %1

Il comando può essere interrotto dall'output del processo in esecuzione, ma funzionerà comunque, è possibile ignorare l'interruzione.

Quindi premi ctrl+ cper interrompere e interrompere il processo

Come menzionato in un commento, è anche possibile inviare segnali per numero di lavoro, ad esempio kill %1

Per completezza, se non è stato utilizzato &al momento della chiamata del processo, è possibile inviarlo in background bloccando prima con ctrl+ ze quindi digitandobg


1
Anche semplicemente fgsenza un argomento sembra funzionare, almeno quando si ha solo un lavoro in background.
Cedric Reichenbach,

1
@CedricReichenbach modificato!
Zanna,

-2

Per rispondere alla domanda posta, ovvero come inviare l'output di un processo in background e in primo piano? , il teecomando eseguirà:

Nell'informatica, tee è un comando negli interpreti della riga di comando (shell) che utilizza flussi standard che legge l'input standard e lo scrive sia sull'output standard che su uno o più file, duplicandone efficacemente l'input. https://en.wikipedia.org/wiki/Tee_(command)


5
Stai fraintendendo qualcosa qui ...
Byte Commander
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.