Ich habe ein Shell-Skript, das von einer AppleScript-App ausgeführt wird. Dieses Shell-Skript startet die Maschine irgendwann mit shutdown -r now
.
Wie kann ich verhindern, dass die AppleScript-Anwendung nach dem Neustart automatisch erneut gestartet wird?
Die Reihenfolge ist diese:
Lassen Sie Ihr AppleScript eine leere Datei an einen vordefinierten Ort schreiben und beim Start des Skripts auf deren Existenz testen. Wenn die Datei bereits vorhanden ist, löschen Sie sie und beenden Sie das Skript. Andernfalls fahren Sie wie gewohnt fort und starten Sie neu.
Sie können versuchen, den Shell-Befehl mit umzuleiten
do shell script "insert_your_command &>/dev/null &"
und sagen Sie dann, dass die App beendet werden soll
BEARBEITEN
Sie können auch eine Verzögerung hinzufügen, bevor Sie den Befehl umleiten.
do shell script "(sleep 5 ; insert_your_command) &>/dev/null &"
Ich vermute, OS X stellt den Status der Apple Script App nach dem Neustart wieder her. Sie könnten möglicherweise versuchen, das Apple-Skript direkt vor dem Neustartbefehl seinen eigenen Anwendungsstatus löschen zu lassen, obwohl ich nicht überprüft habe, ob dies funktioniert oder möglich ist. Es sollte sich in ~/Library/Saved Application State/ befinden.
Okay gefunden.
Das Shell-Skript musste die folgenden Zeilen enthalten:
osascript -e 'tell app "System Events" to restart'
killall "Terminal"
Die obigen Shell-Befehle initiieren den Neustart über einen Ad-hoc-Apple-Script-Befehl, beenden das Terminal jedoch unmittelbar danach. Dies hat den Effekt, dass die Apple Script-App kurz vor dem Neustart von OS X beendet wird. Daher fügt OS X die Apple Script-App nicht in die Liste der geöffneten Apps ein, die nach dem Neustart erneut geöffnet werden müssen.
Zwei Nebenwirkungen dieser Methode:
shutdown -r now
Shell-Befehl, der einen sofortigen Neustart erzwingt.
Fliegender Mülleimer
WGroleau