Выход из Mac Terminal не приводит к завершению работы скрипта с помощью sudo

Выход из Mac Terminal не приводит к завершению работы скрипта с помощью sudo

У меня есть скрипт bash, который называется testingсохраненным в /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, все еще работают!

Я подозреваю, что это происходит потому, что пользователь, а не root, закрывает окно Терминала, и, таким образом, не имеет необходимых разрешений, чтобы влиять на процессы root. Это правильно? Мне кажется, что я упускаю что-то элементарное. Есть ли способ разрешить завершение процессов root при закрытии окна Терминала?

Связанный контент