退出 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 進程的必要權限。它是否正確?我覺得我在這裡缺少一些基本的東西。有什麼方法可以讓根進程在終端機視窗關閉時終止嗎?

相關內容