누르면 ctrl+z
앱이 중지되고 bg
명령 을 사용하여 앱을 백그라운드로 보낼 수 있지만 앱이 중지되는 시간이 짧다는 것을 이미 알고 있습니다 .
앱을 중지하지 않고 백그라운드로 직접 앱을 보내려면 어떻게합니까?
답변
응용 프로그램을 포 그라운드에서 백그라운드로 보내려면 터미널과 셸의 협력이 필요합니다. 쉘은 포 그라운드 프로세스 그룹을 설정해야하기 때문에 터미널은 혼자서 할 수 없습니다. 터미널은 키 누름을 처리해야하기 때문에 쉘은 단독으로 수행 할 수 없습니다 (쉘은 포 그라운드에 없으므로 키 누름을 수신 할 수 없음).
가까운 근사치는 응용 프로그램을 백그라운드로 정말 빠르게 보내는 것입니다. 결국 응용 프로그램은 다른 사람과 CPU 시간을 공유하므로 수백 분의 1 초의 일시 중지는 중요하지 않습니다. (실시간 응용 프로그램의 경우 백그라운드에서 시작해야합니다.) Ctrl+에 대한 셸 바인딩을 사용 Z하여 마지막에 작업을 백그라운드로 보냅니다. 이렇게하면 Ctrl+ Z Ctrl+를 누르면 Z일시 중단 시간이 최소화 된 채 백그라운드로 작업이 전송됩니다.
여기에 zsh 바인딩이 있는데 , 명령 행이 비어 있지 않은 경우 반 타입 명령을 “배경”으로 만듭니다.
fancy-ctrl-z () {
emulate -LR zsh
if [[ $#BUFFER -eq 0 ]]; then
bg
zle redisplay
else
zle push-input
fi
}
zle -N fancy-ctrl-z
bindkey '^Z' fancy-ctrl-z
청중이 아닌 zsh 사용자의 경우 영어로 :
-
다음을 수행하는 쉘 함수를 정의하십시오.
-
이 함수를 Ctrl+에 바인딩합니다 Z.
명령 행이 비어 있는지 여부에 관계없이 배경 동작을 원할 경우 :
function bg_ { builtin bg "$@"; }
zle -N bg_
bindkey '^Z' bg_
bash에서 똑같이 할 수 있는지 모르겠습니다. bind -x '"\C-z": bg'
bash는 tty stop 문자를 그대로두고 Ctrl+ Z를 입력으로 얻지 않는다는 점을 제외 하고는 만큼 쉬워야 합니다.
답변
&
이후에 작업을 추가하여 백그라운드 작업을 수행 할 수 있습니다 .
예를 들어 tail -f /var/log/messages &
작업을 즉시 수행합니다.
항상 그렇듯이 jobs
명령으로 어떤 작업을 백그라운드로했는지 확인할 수 있습니다 .
물론 이것은 아직 명령을 실행하지 않았다고 가정합니다.
답변
명령의 백그라운드는 명령에 앰퍼샌드를 추가하여 수행됩니다.
sleep 300 &
이미 실행중인 유일한 옵션은 중지하고 배경을 지정하는 것입니다.