退出 Mac 终端不会退出使用 sudo 运行的脚本

退出 Mac 终端不会退出使用 sudo 运行的脚本

testing我有一个名为savein 的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

正如预期的那样,第一个登录 shell 已终止,而第二个登录 shell 仍在运行。但 sudo 进程及其分叉(现已成为孤儿)子进程(testing脚本)仍在运行!

我怀疑这是因为关闭终端窗口的是用户,而不是 root,因此没有影响 root 进程所需的权限。它是否正确?我觉得我在这里缺少一些基本的东西。有什么方法可以让根进程在终端窗口关闭时终止吗?

相关内容