Unix \ Linux 응용 프로그램에서 CTRL + Z의 효과는 무엇입니까


85

CTR1 + Z의 동작이 정확히 무엇인지 궁금하고 혼란 스러웠습니다.

프로세스가 포 그라운드에서 실행 중이고 Ctrl + Z를 누르면 백그라운드로 이동합니다.

그러나 정확히 무슨 일이 일어나는가.

계속해서 일을합니까, 아니면 중단되어 원래 위치에서 멈췄습니까?

그리고 그 시점에서 중단되면 백그라운드 작업의 의미는 무엇입니까?


7
Ctrl-Z는 프로세스를 백그라운드로 보내지 않고 일시 중단합니다.
Wooble

답변:


70

"백그라운드 작업"은 사용자와 상호 작용하지 않는 tty 일뿐입니다. tty를 제어하지 않으며 그 기능을 수행합니다 (일반적으로 조용함). 포 그라운드 작업은 그 반대이며 사용자와 상호 작용할 tty의 제어를 보유합니다.

Control-Z는 가장 최근 포 그라운드 프로세스 (tty와 상호 작용하는 마지막 프로세스)를 일시 중단합니다 (일반적으로 쉘과 같이 서스펜션을 무시하는 단계를 수행하지 않는 한). 이렇게하면 일반적으로 쉘로 돌아와서 bg방금 중단 된 프로세스를 백그라운드로 옮기거나 (계속 실행 상태로) fg포 그라운드로 다시 가져 오는 명령 을 입력 할 수 있습니다 .


1
백그라운드 프로세스를 실행 취소하여 fg먼저 어떤 작업을 발행하여 식별 한 jobs 후 % 1이되면 문제가 발생 fb %1 하고 프로세스가 재개
되는지를 알려줍니다

fg %1아닙니다fb %1
ahonnecke

55

Ctrl + Z를 누르면 TSTP신호가 프로세스로 전송 됩니다. 이로 인해 실행이 중단되고 (커널이 프로세스에 더 이상 CPU 시간을 예약하지 않음) 프로세스가 처리를 계속하기 위해 CONT를 기다리고 있습니다.

당신은 / 에뮬레이션을 통해이를 복제 할 수 kill -TSTPkill -CONT(때문에 kill이름에도 불구하고, 프로세스에 임명 신호를 보내드립니다!)

쉘은 프로세스를 '배경'하는 기능을 가지고 있지만 이것은 쉘과 프로세스 간의 관계입니다. 프로세스 자체에는 실제로 '배경'또는 '전경'이라는 개념이 없습니다.

자세한 내용은 여기 를 참조 하십시오 .


2
^ZSIGTSTP하지 SIGSTOP 전송
윌리엄 Pursell

@WilliamPursell-아! 유명한. 이제 바뀌었다. Thx
Brian Agnew

15

이 명령을 고려하십시오. 내 노트북에서 4.5 초 :

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

Ctrl+ 를 누르면 Z계산이 일시 중단됩니다. 다음을 사용하여 전경 계산을 재개 할 수있는 옵션이 fg또는 사용하여 백그라운드에서 재개를 bg. 후자는 실행과 다소 비슷합니다.

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

9

ctrl + z를 누르면 프로세스가 일시 중지되고 중지됩니다. fg를 사용하면 일시 중단 된 작업을 포 그라운드로 옮길 수 있으며 bg를 사용하면 백그라운드에서 실행할 수 있습니다.

자세한 내용은 http://linuxreviews.org/beginner/jobs/ 를 참조하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.