Linux에서 텍스트 편집기와 같은 새 응용 프로그램을 시작했지만 “&”를 사용하지 않았다고 가정 해 봅시다. 해당 응용 프로그램을 닫을 필요없이 백그라운드에서 해당 프로세스를 실행하기 위해 어떤 명령을 사용 하시겠습니까? 이런 방식으로 프로세스를 열고 별도로 작동시킬 수 있습니다 (예 : 프로세스를 생성하는 데 사용한 명령 줄 터미널과 텍스트 편집기와 같은 프로세스가 여전히 실행 중임).
답변
터미널 창에서 일반적으로 Control+ Z를 입력 하여 프로세스를 “일시 중지”한 다음 bg
명령을 사용하여 “배경”합니다.
예를 들어 수면 명령
$ /bin/sleep 1000
^Z[1] + Stopped /bin/sleep 1000
$ bg
[1] /bin/sleep 1000&
$ jobs
[1] + Running /bin/sleep 1000
$
프로세스가 실행 중이고 여전히 명령 줄이 있습니다.
답변
Ctrl+ Z는 그것을하는 방법이지만 완전성을 위해 : 질문은 “명령”을 요구하며, 그것은 (다른 터미널에서) 것입니다 :
kill -STOP pid_of_the_running_applications
그리고 물론
bg
응용 프로그램 터미널에서.
답변
배쉬에서 :
Ctrl+ Z다음 bg
.
이제 실행 jobs
하고 결과를 확인하십시오.
답변
CTRL– 를 눌러야하는 불편을 방지하기 위해 z편집기를 백그라운드에서 실행하는 래퍼 스크립트를 만들 수 있습니다. 이런 식으로 백그라운드에서 명시 적으로 시작하는 것을 기억할 필요가 없습니다.
#!/bin/sh
EDITOR="emacs" # or whatever
if [ -z "${DISPLAY}" ]; then
${EDITOR} "$@"
else
${EDITOR} "$@" &
fi
위에서 우리는 먼저 X 서버를 사용할 수 있는지 확인한 다음 백그라운드에서만 편집기를 실행합니다. . "$@"
래퍼 스크립트에 제공 한 것처럼 모든 인수를 선택한 편집자 ( )로 전달합니다 .
명령이 누락되었습니다 … 기본 실험에 따라 터미널이 포함되지 않은 GUI 프로그램의 경우 먼저 전송 SIGSTOP
한 다음 SIGCONT
포 그라운드 프로세스 로 간단 합니다 ( kill
쉘 스크립트를 사용하여 구현하면 명령 사용) . 물론 다른 터미널 창 / 탭에서 실행해야하며 신호를 보내려는 PID를 편리하고 일반적인 방식으로 찾는 것이 어렵습니다. 기본적으로 주어진 이름의 모든 프로세스에 두 개의 신호를 보낼 수 있습니다 (기본적으로 즐겨 사용하는 편집기로 설정하고 PID를 인수로 사용하도록 허용).
#!/bin/sh
EDITOR=emacs # whatever
stop_cont_prog()
{
case "$1" in
# begin with number is considered PID - this is not good
# enough to be taken seriously...
[1-9]*) kill -SIGSTOP "$1"; kill -SIGCONT "$2";;
*) killall -SIGSTOP "$1"; killall -SIGCONT "$2";;
esac
}
if [ -n "$1" ]; then
for prog in "$@"; do stop_cont_prog "$1"; done
else
stop_cont_prog "${EDITOR}"
fi
이 방법 emacs
은 백그라운드에서 (여러) 명령을 실행 한 후 터미널 탭을 올바르게 제공했습니다 . 그러나 쉘 작업 제어 또는 터미널 설정 혼동으로 인해 터미널에서 실행중인 emacs 프로세스가 올바르게 복원되지 않았습니다. 따라서이 방법은 약간의 정교화로부터 이익을 얻을 수 있습니다.
은 SIGSTOP
당신이 (공통 기본값으로)를 누르면 전경 프로세스에 전송되어 정확히 CTRL– z. stty -a
출력 참조
$ stty -a
speed 38400 baud; rows 50; columns 200; line = 0;
intr = ^C; [...] start = ^Q; stop = ^S; susp = ^Z; [...]
[...]
(약칭 출력) 및 stty
매뉴얼 페이지 :
susp CHAR
CHAR will send a terminal stop signal
SIGSTOP
신호를 사용하여 중지 된 프로세스는 전송하여 다시 시작할 수 있습니다 SIGCONT
. 일반적으로 쉘 작업 제어 로직은 무시 하고 SIGCONT
관련된 명령 fg
및 기타 필요한 조작 을 전송하고 처리 bg
합니다.