
터미널에서 시작된 작업이나 스크립트를 백그라운드에서 실행할 수 있나요?
답변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