불다man
set
아래에 설명된 옵션은 하위 섹션에 나열되어 있습니다 -m
.
모니터 모드. 작업 제어가 활성화되었습니다. 이 옵션은 이를 지원하는 시스템의 대화형 셸에 대해 기본적으로 활성화되어 있습니다(위의 작업 제어 참조). 백그라운드 프로세스는 별도의 프로세스 그룹에서 실행되며 완료되면 종료 상태가 포함된 줄을 인쇄합니다.
(링크된 페이지에서 찾으시려면 "모니터모드"로 검색하시면 딱 한 번 나옵니다.)
문제는 이 모델이 가능한지 여부이다.효과적으로Bash 세션 중 닫기, 수행 방법 및 예상되는 결과는 무엇입니까? 나는 그것을 시도하려고 노력했지만 지금까지 결과가 없습니다.
나는 이 명령을 알고 있지만 set +m
, 그 원인은 무엇입니까? 작업 제어를 사용 중지하시겠습니까? 작업 완료 및 종료 메시지를 무음으로 설정하시겠습니까?
답변1
set +m
모니터 모드(작업 제어라고도 함)를 비활성화하지만 그다지 효과가 없으며 대부분 유용한 효과도 아닙니다. 감시 모드가 꺼진 상태에서 백그라운드 작업이 시작되면 해당 작업은 적합하지 않으며 fg
작업 bg
이 종료, 중지 또는 재개될 때 셸은 메시지를 인쇄하거나 SIGCLD 트랩을 수행하지 않습니다.
가장 유용한 차이점은 감시 모드로 인해 파이프라인이 자체 시스템에서 실행된다는 것입니다.프로세스 그룹. 이는 전체 프로세스 그룹을 종료하려는 경우 유용한 고려 사항입니다. 감시 모드가 비활성화되면 쉘을 종료하는 프로세스 그룹도 해당 하위 프로세스를 종료합니다. 감시 모드가 활성화되면 각 파이프는 자체 그룹이 되며 그룹이 독립적으로 종료될 수 있습니다.
bash-4.3$ 세트-m bash-4.3$ sleep1111& [1]17526 bash-4.3$ 세트+m bash-4.3$ sleep2222& [2]17527 bash-4.3$ ps -o pid,ppid,pgid,sid,cmd 17526 17527 PID PPID PGID SID CMD 175261752517526 7773 수면 1111 1752717525 17525 7773 수면2222
답변2
모니터 모드를 비활성화하려면 다음을 실행하십시오.
set +m
예를 들어:
$ echo $SHELLOPTS
braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
$ set +m
$ echo $SHELLOPTS
braceexpand:emacs:hashall:histexpand:history:interactive-comments