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

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

testingsave inside 라는 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스크립트는 여전히 실행 중입니다!

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

관련 정보