Beim Beenden des Mac-Terminals wird das mit „sudo“ ausgeführte Skript nicht beendet.

Beim Beenden des Mac-Terminals wird das mit „sudo“ ausgeführte Skript nicht beendet.

Ich habe ein Bash-Skript namens „ testinggespeichert darin“ /usr/local/bin.

In einem Terminalfenster in macOS führe ich aus sudo testing. In einem zweiten Terminalfenster erzeuge ich eine Liste von Prozessen:

ps -axo tty,pid,ppid,args | { head -1; grep "bash\|testing" | grep -v grep; }

Das Ergebnis ist wie erwartet:

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

Nach dem Schließen des ersten Terminalfensters (während testingläuft noch darin), sieht die Prozessliste folgendermaßen aus:

TTY        PID  PPID ARGS
??       73701     1 sudo testing
??       73702 73701 /bin/bash /usr/local/bin/testing
ttys001   3714  3713 -bash

Wie erwartet wurde die erste Login-Shell beendet und die zweite Login-Shell läuft noch. Aber der Sudo-Prozess und sein gegabeltes (jetzt verwaistes) Kind, das testingSkript, laufen noch!

Ich vermute, das liegt daran, dass der Benutzer und nicht Root das Terminalfenster schließt und daher nicht über die erforderlichen Berechtigungen verfügt, um Root-Prozesse zu beeinflussen. Ist das richtig? Ich habe das Gefühl, dass ich hier etwas Grundlegendes übersehe. Gibt es eine Möglichkeit, die Beendigung der Root-Prozesse zuzulassen, wenn das Terminalfenster geschlossen wird?

verwandte Informationen