bg 명령이 프로세스를 백그라운드로 보내지 않습니다.

bg 명령이 프로세스를 백그라운드로 보내지 않습니다.

ctrl-z를 사용하여 프로세스를 일시 중지한 후 bg명령을 사용하여 백그라운드로 보내 보았습니다. 불행하게도 프로세스는 백그라운드로 전송되지 않고 포그라운드에서 실행 중인 것으로 다시 나타납니다. 그런 다음 다시 Ctrl-Z를 눌러 다시 일시 중지합니다. 안타깝게도 키 조합이 더 이상 응답하지 않으며 프로세스가 계속 진행 중입니다. 더 나쁜 점은 명령이 for많은 프로젝트에 대한 루프라는 것입니다. Ctrl-C를 누르면 마지막 반복까지 다음 반복에서 작업이 재개됩니다.

macOS의 iTerm 내의 tmux에서 실행됩니다.

답변1

설명에 따르면 이 bg명령은 작동합니다. 그렇지 않으면 ctrl-z 및 ctrl-c가 계속 작동합니다.

프로세스가 백그라운드에 있다고 해서 여전히 출력을 보낼 수 없다는 의미는 아닙니다. 이것을 보고 싶지 않다면 실행 stty tostop하고 백그라운드 작업이 출력을 보내려고 하면 중지되며 fg원하는 경우 포그라운드()에서 계속할 수 있습니다.

이와 같이 백그라운드에서 시끄러운 프로세스가 실행되고 있는 경우 Enter 키를 몇 번 눌러도 여전히 셸 프롬프트가 표시되는 것을 볼 수 있습니다. 다음과 같은 몇 가지 방법으로 이 상황을 해결할 수 있습니다.

  • 맹목적으로 kill 명령을 입력하여 죽이려고 할 수 있습니다.
  • stty tostop위에서 제안한 대로 맹목적으로 입력할 수 있습니다.
  • 입력하여 fg전경으로 다시 가져올 수 있습니다(두 개 이상 없으면 오류가 발생하기를 바랍니다). 그런 다음 ctrl-z를 사용하여 중지하거나 ctrl-c를 사용하여 종료할 수 있습니다.
  • 그래픽 환경이나 터미널 멀티플렉서(tmux와 같은)에 있는 경우 다른 창을 열고 ps문제가 되는 프로세스를 사용하거나 찾아서 top거기에서 종료할 수 있습니다.

답변2

텍스트 창 명령 "jobs"는 cntl-Z에 의해 중지된 작업을 보고합니다. "fg #" 및 "kill #"(여기서 #은 명령에 의해 보고된 작업 번호)은 선택한 작업을 fg로 가져오거나 # 실행 중인 진행을 종료합니다. jobs 명령은 sh, csh 및 bash에 적용 가능합니다. 프로그램을 종료하는 것보다 "fg"를 사용하고 프로그램을 종료하는 것이 더 좋습니다.

이것은 작동하지 않습니다: "추가" 텍스트 파일, .c 등 텍스트 파일을 편집하려면 더보기에 단일 v 명령을 입력하세요. "vim" 편집 세션이 cntl-Z인 경우 터미널이 중단되고 "more" 명령과 "vim"을 다른 창에서 종료해야 합니다. 다른 cntl-Z, fg, kill, ls, ps 등의 명령은 정지된 터미널에서 작동하지 않습니다.

관련 정보