Ctrl+ Zinterrompe o trabalho enquanto Ctrl+ Cmata o trabalho.
Por que é que? O outro caminho não faria mais sentido?
z@z-lap:~$ sleep 100&
[1] 4458
z@z-lap:~$ sleep 200&
[2] 4459
z@z-lap:~$ jobs
[1]- Running sleep 100 &
[2]+ Running sleep 200 &
z@z-lap:~$ fg %1
sleep 100
^Z
[1]+ Stopped sleep 100
z@z-lap:~$ jobs
[1]+ Stopped sleep 100
[2]- Running sleep 200 &
z@z-lap:~$ fg %1
sleep 100
^C
z@z-lap:~$ jobs
[2]+ Running sleep 200 &
bash
shell
signals
job-control
neo0
fonte
fonte
Respostas:
Eu acho que você pode estar confuso sobre a notação de controle do trabalho. Notavelmente "Interrompido" significa que um trabalho ainda está ativo, mas que sua capacidade de processar qualquer coisa foi mantida (não há tempo na CPU para processar qualquer coisa). Este é efetivamente um estado de "Pausa" ou "Suspenso", embora esse não seja o termo técnico correto.
CtrlCnão "interrompe" um trabalho, cancela ou mata. Tecnicamente, ele faz com que um sinal de interrupção seja enviado ao programa, solicitando que ele aborte o que está fazendo e saia imediatamente. Alguns programas ouvirão esse sinal e farão algum trabalho de limpeza de emergência antes de sair. Outros não responderão ao sinal e, posteriormente, serão abortados.
CtrlZ, por outro lado, "interrompe" um trabalho. Novamente, isso é feito com um sinal, mas desta vez é um 'stop' em vez de um sinal de 'interrupção'. Isso efetivamente o coloca em espera e retorna o controle para o shell, mas na verdade não elimina o trabalho. Se você deseja que esse trabalho continue em execução, você pode emitir um
bg
comando para enviar o último trabalho parado para o segundo plano. Ele continuará sendo executado como um trabalho em segundo plano, como se você o tivesse executado&
em primeiro lugar. Você também pode usarfg
para retomar o último trabalho interrompido em primeiro plano (permitindo que ele continue de onde parou e permitindo que você interaja com ele novamente).fonte
CTRL+C=SIGINT
eCTRL+Z=SIGTSTP
.