백그라운드에서 애플리케이션을 실행하면 어떤 이점이 있나요?

백그라운드에서 애플리케이션을 실행하면 어떤 이점이 있나요?

백그라운드에서 앱을 실행하면 어떤 이점이 있는지 잘 모르겠습니다. 명령줄을 통해서와 같습니다
.Application &

도대체 왜 백그라운드에서 앱을 실행합니까? 언제 이 일을 하기로 결정해야 합니까?

답변1

일반적으로 실행하는 데 시간이 너무 오래 걸리고 사용자 상호 작용이 필요하지 않은 애플리케이션은 터미널에서 계속 작업할 수 있도록 백그라운드로 전송됩니다.

백그라운드에서 실행되는 작업은 STDOUT, STDIN 및 STDERR이 다르다는 점을 제외하면 포그라운드에서 실행되는 작업과 동일하게 처리됩니다.

파일 압축이나 백업 등 시간이 오래 걸리는 작업이 있는 경우 해당 작업을 백그라운드로 보낼 수 있습니다.

jobs명령을 사용하여 백그라운드에서 실행 중인 작업을 나열할 수 있습니다.

$ ./job1.sh &
[1] 9747
$ ./job2.sh &
[2] 9749
$ ./job3.sh &
[3] 9751
$ jobs
[1]   Running                 ./job1.sh &
[2]-  Running                 ./job2.sh &
[3]+  Running                 ./job3.sh &

작업이 백그라운드 셸로 전송될 때마다 프로세스 합계가 여기에 표시됩니다 job id. pid프로세스를 전경으로 되돌리려면 fg명령을 사용하여 프로세스를 재개할 수 있습니다.

$ fg 1
./job1.sh

하지만 터미널(셸)을 닫으면 SIGHUP이 셸에서 생성된 모든 백그라운드 프로세스로 전송되어 해당 프로세스가 종료된다는 점에 유의하세요. 이를 방지하려면 disown명령을 사용하여 작업 테이블에서 이러한 프로세스를 제거하여 프로세스가 종료되는 것을 방지할 수 있습니다.

nohup가장 좋은 방법 중 하나는 SIGHUP 신호가 프로세스를 종료하지 않고 백그라운드에서 안전하게 실행되도록 명령을 사용하여 백그라운드 프로세스를 시작하는 것입니다 .

huponexitbash 셸에서 옵션을 설정하여 SIGHUP이 하위 프로세스(bg 작업)로 전송되는 것을 방지할 수도 있습니다.

$ shopt -s huponexit

이 옵션은 최신 버전의 Bash에서 기본적으로 설정되어 있지만, 설정되어 있지 않은 경우 이 옵션을 추가하여 ~/.bashrc기본 동작으로 만들 수 있습니다.

답변2

복제 작업과 같이 완료하는 데 5분이 걸리는 응용 프로그램을 실행하면 프로그램이 실행되는 동안 셸이 5분 동안 차단됩니다. 그런 다음 복제 작업은 login 으로 +표시되는 소위 포그라운드 프로세스 그룹에 배치됩니다 ps. 5분 동안 다른 작업을 수행해야 할 수도 있지만 셸이 차단되었습니다.

반면, cp source target &백그라운드()에서 복사 작업을 실행하면 현재 셸을 차단하지 않고 백그라운드에서 작업이 실행됩니다. 다른 일로 넘어갈 수 있습니다. fg원하는 경우 프로세스를 다시 전경으로 가져올 수 있습니다.

관련 정보