TCP 및 UDP 패킷을 수신하는 응용 프로그램을 실행 중이므로 일시 중지 할 수 없습니다. 나는을 사용하여 백그라운드 모드에서 다른 인수로 동일한 응용 프로그램의 3 개의 프로세스를 초기에 실행했습니다 &
. 내가했을 때 $fg
세 가지 프로세스가 모두 포 그라운드로 들어갔다. 이제 다시 일시 중단하지 않고 백그라운드로 보내려고합니다. 어떻게해야합니까?
TCP 및 UDP 패킷을 수신하는 응용 프로그램을 실행 중이므로 일시 중지 할 수 없습니다. 나는을 사용하여 백그라운드 모드에서 다른 인수로 동일한 응용 프로그램의 3 개의 프로세스를 초기에 실행했습니다 &
. 내가했을 때 $fg
세 가지 프로세스가 모두 포 그라운드로 들어갔다. 이제 다시 일시 중단하지 않고 백그라운드로 보내려고합니다. 어떻게해야합니까?
답변:
가장 먼저해야 할 일 : 포 그라운드에는 하나의 프로세스 만있을 수 있으며 , 세 가지 모두가 아닙니다. fg
최신 프로세스를 포 그라운드로 가져옵니다. Ctrl+ 프로세스를 수행 z한 다음 bg
해당 애플리케이션을 "방해"하지 않기 위해 더 빠르게 입력 하려면 (프로세스 스케줄러가 초당 여러 번이 작업을 수행함) 포 그라운드에서 프로세스의 PID를 찾은 다음 두 번째 터미널에서 / SSH 세션, 사용
kill -SIGSTOP »pid« ; kill -SIGCONT »pid«
원래 터미널은이라고 말하지만 바로 stopped
전송 한 이후 SIGCONT
프로세스는 백그라운드에서 계속 실행됩니다.
포 그라운드 작업이 실제로 있다면 bash는 완료되기를 기다리고 있습니다. 포 그라운드 작업 의 정의입니다 . bash가 여전히 터미널을 제어 할 수 있다면 다음과 jobs -l
같은 상황을 확인하십시오 .
$ ncat -kl -p 10111 &
[1] 13404
$ ncat -kl -p 10222 &
[2] 13405
$ ncat -kl -p 10333 &
[3] 13406
$ jobs -l
[1] 13404 Running ncat -kl -p 10111 &
[2]- 13405 Running ncat -kl -p 10222 &
[3]+ 13406 Running ncat -kl -p 10333 &
ncat
이를 위해 세 가지 백그라운드 청취 프로세스를 시작했습니다 . 작업 상태에 대해 "완료"또는 "중지됨"이 나타날 수도 있습니다.
당신은 효과적으로 배경 사용하여 다른 쉘에서 전경 작업 할 수 있습니다 스테판 델 의 SIGSTOP / SIGCONT 방법합니다 (비록 전송 실제 신호 와 쉘이 Ctrl- ZSIGTSTP이다, 중 신호가 작동합니다).
포 그라운드 및 배경이라는 용어가 사용될 때 프로세스 와 작업 간에는 미묘한 차이가 있습니다 . 하나의 쉘 포 그라운드 작업 만 있고 여러 포 그라운드 프로세스 가있을 수 있습니다 (이는 터미널 프로세스 그룹 ID 와 관련이 있으며 파이프 라인에서 둘 이상의 프로세스를 시작할 때 관찰 할 수 있음).
쉘 제어 하에서 실행중인 프로세스 또는 파이프 라인을 "작업"이라고합니다. bg
또는 fg
명령을 사용할 때 가장 최근의 작업 (내 경우에는 위의 작업)을 암시 적으로 참조하는 것입니다 +
. 이러한 작업은 (다른 것들 중에서도) % 1 % 2 또는 % 3 (의 숫자 ) 으로 명시 적 으로 참조 될 수 있습니다 []
.
규정되지 않은 fg
명령은 가장 최근의 한 작업에만 영향을 미치므로 현재 상황을 이해하는 데 착각 할 수 있습니다. 백그라운드 작업 은 여전히 터미널에 쓸 수 있습니다.
echo foo > /dev/tcp/127.0.0.1/10111
프로그램이 터미널을 처리하는 방법에 따라 달라질 수 있습니다 ncat
. 읽기를 위해 프로그램 실행이 중지되고 "중지됨"메시지가 표시됩니다. 프로세스를 시작하고 종료에 대기 또는 SIGTTIN 신호를 수신 할 쉘은 ( nohup
같은이 주위에 방법입니다 disown
).
당신은 특정 중지 작업을 배경으로 할 수 있습니다
$ bg %3
(내 경우에는 오류가 발생합니다 bash: bg: job 3 already in background
)
프로그램이 SIGTSTP를 잡아 뭔가 특별한 작업을 수행하지 않는 프로세스가 전경에 그렇지 않은 경우, 그것은 빠른에 문제가있는 것 같지입니다 Ctrl- Z와 bg
. 이와 관련하여 네트워크 프로그램에는 특별한 것이 없습니다. 들어오는 연결 / 데이터는 커널에 의해 버퍼링됩니다 (최대 1 포인트). 스트리밍 연결은 관찰 가능한 일시 중지를 가질 수 있습니다.
자세한 내용은 bash 매뉴얼 페이지 의 " 작업 제어 "섹션을 참조하십시오.
가장 쉬운 방법은 스크린 프로그램 을 사용하는 것 입니다. 가상 터미널 내에서 응용 프로그램을 시작한 다음 Ctrl + A, D를 사용하여 화면을 종료 할 수 있습니다. 세션을 재개하려면 유형을 입력하십시오 screen -x
. 여러 프로세스가있는 경우 다시 연결할 화면 목록이 표시됩니다. 자세한 내용은 화면 맨 페이지를 참조하십시오 .