백그라운드에서 작업을 실행하는 방법은 무엇입니까?

백그라운드에서 작업을 실행하는 방법은 무엇입니까?

터미널에서 시작된 작업이나 스크립트를 백그라운드에서 실행할 수 있나요?

답변1

원하는 것에 따라 여기에는 여러 가지 답변이 있습니다(이 답변은 쉘에서 유효하며 bash다른 zsh답변은 다를 수 있음).

백그라운드에서 명령을 실행해야 하고 실행하기 전에 이를 알고 있는 경우 &명령 끝에 a를 추가하면 됩니다( sleep 60예제 명령과 같이 1분 동안 아무 작업도 수행하지 않음).

[romano:~] % sleep 60 &
[1] 9054
1& [romano:~] %

이미 실행한 경우 ctrl- 를 사용하여 중지할 수 있으며 Z, 셸에서 프롬프트가 표시되면 다음 명령을 사용하여 배경을 설정할 수 있습니다 bg.

1& [romano:~] % sleep 60  
^Z
[1]  + 9084 suspended  sleep 60
1z [romano:~] 20 % bg
[1]  + 9084 continued  sleep 60
1& [romano:~] % 

두 경우 모두 프로세스/작업은 여전히 ​​터미널에 연결되어 있습니다. 터미널을 닫으면전화 끊기(HUP) 신호가 프로세스로 전송됩니다. 그러면 대부분의 프로세스가 정상적으로 종료됩니다. 프로세스가 계속 진행되는지 확인해야 하는 경우 다음을 사용하여 시작할 수 있습니다.

nohup sleep 60 & 

bg또는 간단한 명령을 사용하여 배경으로 보낸 후 다음을 사용하여 &쉘에 이를 잊어버리도록 지시합니다.

disown %% 

( %%직업 통제바로가기이며 여기서는 백그라운드에서 전송된 마지막 프로세스를 나타냅니다.)

그런 다음 프로세스의 출력을 고려해야 합니다. 처음 두 경우에는 출력이 여전히 터미널에 도착합니다. 의 경우에는 nohup이라는 파일로 전환되고 nohup.out, 후자의 경우( 사용 시 disown) 터미널을 닫지 않는 한 터미널로 이동하며 이 경우 동작은 정의되지 않습니다. 다음을 사용하여 백그라운드 프로세스의 출력을 스스로 관리하는 것이 좋습니다.리디렉션.

답변2

&명령에 추가하십시오 .

예:

$ cp FromA ToB &

답변3

이 예에서는 백그라운드에서 업데이트를 실행합니다.

sudo apt-get dist-upgrade -y &

&를 참고하세요.
stdout을 숨기려면 다음을 수행하십시오.

sudo apt-get dist-upgrade -y > /dev/null &

답변4

더 고급 기능을 원하고 나중에 로컬로 또는 SSH를 통해 세션을 사용하려면 screen을 사용할 수 있습니다.

# screen
# apt-get update -y

그런 다음 CTRL+를 누른 A다음 을 누르세요 D.

나중에 다시 연결할 수 있습니다:

# screen -rd

관련 정보