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

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

백그라운드에서 애플리케이션을 실행하면 어떤 이점이 있는지 잘 모르겠습니다. 명령줄을 통한 것과
같은 것입니다 .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명령을 사용하여 작업 테이블에서 해당 프로세스를 제거하여 프로세스가 종료되는 것을 방지할 수 있습니다.

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

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

$ shopt -s huponexit

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

답변2

복사 작업과 같이 종료까지 5분이 소요되는 애플리케이션을 실행하는 경우 프로그램이 실행되는 동안 전체 5분 동안 셸이 차단됩니다. 그런 다음 복사 작업은 로그인 으로 표시되는 소위 포그라운드 프로세스 그룹에 속하게 +됩니다 ps. 5분 동안 다른 작업을 수행해야 할 수도 있지만 셸이 차단되었습니다.

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

관련 정보