Qual é o efeito do CTRL + Z em um aplicativo unix \ Linux

83

Fiquei curioso e confuso com o que exatamente é o comportamento de CTRl + Z.

Sei que, se um processo está sendo executado em primeiro plano e pressionamos ctrl + z, ele passa para o segundo plano.

Mas o que exatamente acontece.

Ele continua fazendo seu trabalho ou fica suspenso e parado no ponto em que estava.

E se for interrompido nesse ponto, e qual é o significado do trabalho em segundo plano.

Kumar Alok
fonte
7
Ctrl-Z não envia um processo para o plano de fundo, ele o suspende.
Wooble

Respostas:

68

Um "trabalho em segundo plano" é apenas um que não está interagindo com o usuário - ele não controla o tty e apenas faz o que faz (geralmente silenciosamente). Um trabalho em primeiro plano é o inverso, ele detém o controle do tty para interagir com o usuário.

O Control-Z suspende o processo em primeiro plano mais recente (o último processo a interagir com o tty) (a menos que esse processo tome medidas para ignorar a suspensão, como normalmente fazem os shells). Isso geralmente o levará de volta ao seu shell, a partir do qual geralmente você pode digitar o comando bgpara mover o processo suspenso para o segundo plano (deixando que continue a ser executado) ou fgpara trazê-lo de volta ao primeiro plano.

mah
fonte
11
para desfazer um processo em segundo plano com o fgprimeiro identificar qual trabalho, emitindo jobs então dizer se a sua% 1, em seguida, emitir fb %1 e processo vai se retomou
Scott Stensland
fg %1nãofb %1
ahonnecke
55

Pressionar Ctrl + Z envia o TSTPsinal para o seu processo. Isso interrompe a execução (o kernel não agendará mais tempo de CPU para o processo) e o processo aguarda um CONT para continuar o processamento.

Você pode emular / replicar isso via kill -TSTPe kill -CONT(já killque enviará um sinal indicado ao seu processo, apesar do nome!)

O shell tem a funcionalidade de 'segundo plano' o processo, mas esse é um relacionamento entre o shell e o processo. O processo em si realmente não tem o conceito de "plano de fundo" ou "primeiro plano".

Veja aqui para mais informações.

Brian Agnew
fonte
2
^Zenvia SIGTSTP, não SIGSTOP
William Pursell
@WilliamPursell - ah! Notado. Agora mudou. Thx
Brian Agnew
15

Considere este comando, que leva aprox. 4,5 segundos no meu laptop:

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

Quando você pressiona Ctrl+ Z, o cálculo será suspenso. Você tem a opção de retomar o cálculo em primeiro plano fgou retomar em segundo plano usando bg. Este último é mais ou menos equivalente à execução:

echo 2^10000000 | bc -lq | wc -c &
Bolo
fonte
9

Um processo é suspenso e parado ao pressionar ctrl + z. Com fg, você pode mover o trabalho suspenso para o primeiro plano; com bg, você pode executá-lo em segundo plano.

Veja http://linuxreviews.org/beginner/jobs/ para mais informações.

akluth
fonte