Mac 터미널을 종료해도 sudo로 실행되는 스크립트가 종료되지 않습니다.

Mac 터미널을 종료해도 sudo로 실행되는 스크립트가 종료되지 않습니다.

testingsavein이라는 bash 스크립트가 있습니다 /usr/local/bin.

macOS의 한 터미널 창에서 sudo testing두 번째 터미널 창에서 프로세스 목록을 생성합니다.

ps -axo tty,pid,ppid,args | { head -1; grep "bash\|testing" | grep -v grep; }

반환 결과는 예상대로입니다.

TTY        PID  PPID ARGS
ttys000  73674 73673 -bash                              # login shell used to run sudo
ttys000  73701 73674 sudo testing                       # sudo process
ttys000  73702 73701 /bin/bash /usr/local/bin/testing   # "testing" bash script being run by sudo
ttys001   3714  3713 -bash                              # second login shell used to generate this process list

그러나 첫 번째 터미널 창을 종료한 후(하지만 testing여전히 실행 중) 프로세스 목록은 다음과 같습니다.

TTY        PID  PPID ARGS
??       73701     1 sudo testing
??       73702 73701 /bin/bash /usr/local/bin/testing
ttys001   3714  3713 -bash

예상한 대로 첫 번째 로그인 셸이 종료되었지만 두 번째 로그인 셸은 계속 실행 중입니다. 그러나 sudo 프로세스와 분기된(현재 고아가 된) 하위 프로세스( testing스크립트)는 여전히 실행 중입니다!

나는 루트가 아닌 사용자가 터미널 창을 닫고 있기 때문에 루트 프로세스에 영향을 미치는 데 필요한 권한이 없기 때문에 이것이라고 생각합니다. 맞습니까? 여기에 기본적인 것이 빠진 것 같습니다. 터미널 창이 닫힐 때 루트 프로세스를 종료시키는 방법이 있습니까?

관련 정보