Mac端末を終了してもsudoで実行されるスクリプトは終了しません。

Mac端末を終了してもsudoで実行されるスクリプトは終了しません。

testingsaveinというbashスクリプトがあります/usr/local/bin

macOS の 1 つの端末ウィンドウで、sudo testing2 番目の端末ウィンドウでプロセスのリストを作成します。

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

予想通り、最初のログインシェルは終了しましたが、2番目のログインシェルはまだ実行中です。しかし、sudoプロセスと分岐(現在孤立した)サブプロセス(testingスクリプト)はまだ実行中です!

私はroot以外のユーザーがターミナルウィンドウを閉じているので、rootプロセスに影響を与えるために必要な権限がないので、これだと思います。そうですか?ここに基本的なものが欠けているようです。ターミナルウィンドウが閉じたときにルートプロセスを終了する方法はありますか?

ベストアンサー1

おすすめ記事