Qual è l'effetto di CTRL + Z su un'applicazione unix \ Linux


85

Ero curioso e confuso che qual è esattamente il comportamento di CTRl + Z.

Lo so, se un processo è in esecuzione in primo piano e premiamo ctrl + z, si passa allo sfondo.

Ma cosa succede esattamente.

Continua a fare il suo lavoro o viene sospeso e fermato nel punto in cui si trovava.

E se viene arrestato a quel punto, e qual è il significato del lavoro in background.


7
Ctrl-Z non invia un processo in background, lo sospende.
Wooble,

Risposte:


70

Un "lavoro in background" è solo uno che non interagisce con l'utente - non controlla il tty e fa solo la sua cosa (generalmente in silenzio). Un lavoro in primo piano è il contrario, mantiene il controllo del tty per interagire con l'utente.

Control-Z sospende il processo di primo piano più recente (l'ultimo processo per interagire con tty) (a meno che quel processo non passi per ignorare la sospensione, come fanno normalmente le shell). Questo generalmente ti riporterà alla tua shell, da cui puoi generalmente inserire il comando bgper spostare il processo appena sospeso sullo sfondo (lasciandolo continuare a funzionare) o fgper riportarlo in primo piano.


1
per annullare un processo in background con fgprima identificare quale lavoro emettendo jobs quindi dire se il suo% 1 quindi il problema fb %1 e il processo verranno ripresi
Scott Stensland

fg %1nofb %1
ahonnecke il

55

Premendo Ctrl + Z si invia il TSTPsegnale al processo. Ciò interrompe l'esecuzione (il kernel non pianificherà più tempo della CPU per il processo) e il processo è in attesa di un CONT per continuare l'elaborazione.

Puoi emularlo / replicarlo tramite kill -TSTPe kill -CONT(poiché killinvierà un segnale nominato al tuo processo, nonostante il nome!)

La shell ha la funzionalità di "background" del processo, ma questa è una relazione tra la shell e il processo. Il processo in sé non ha realmente il concetto di "sfondo" o "primo piano".

Vedi qui per maggiori informazioni.


2
^Zinvia SIGTSTP, non SIGSTOP
William Pursell il

@WilliamPursell - ah! Notato. Ora è cambiato Grazie
Brian Agnew,

15

Considera questo comando, che richiede ca. 4,5 secondi sul mio laptop:

echo 2^10000000 | bc -lq | wc -c

Quando si preme Ctrl+ Z, il calcolo verrà sospeso. Hai un'opzione per riprendere il calcolo in primo piano usando fgo riprenderlo in background usando bg. Quest'ultimo è più o meno equivalente all'esecuzione:

echo 2^10000000 | bc -lq | wc -c &

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.