Ich versuche, Mac OS X dazu zu bringen, alle meine VirtualBox-VMs beim Neustart zu speichern. Ich habe bereits ein Skript, das dies tut, aber ich benötige OS X, um dieses Skript vor einem Neustart automatisch auszuführen.
Wird Mac OS X beim Neustart / sbin / reboot ausgeführt?
Oder wie könnte dies sonst erreicht werden?
/etc/rc.shutdown.local
zu platzieren, um es beim Herunterfahren auszuführen. Es hört sich so an, als ob Sie danach suchen.Antworten:
Obwohl Apple die Verwendung von " launchd " empfiehlt , ist es am einfachsten, ein Shell-Skript zu erstellen, indem Sie beispielsweise Terminals Pico verwenden:
Die Datei kann Folgendes enthalten:
Dann geben Sie Ausführungsrechte:
Schließen Sie das Skript schließlich an die Abmeldeprozedur an:
Wenn Sie eine andere Anwendung starten, da ich diese noch nicht getestet habe, kann es hilfreich sein, mich und Sie zu warnen, dass:
Möglicherweise müssen wir das Abschaltsignal beenden, um das auszuführen, was wir wollen.
Dann senden Sie ein neues (achten Sie darauf, das von unserem eigenen
Skript gesendete Signal nicht zu töten )…
Wenn Sie den Haken entfernen möchten:
Bei Verwendung von " launchd " besteht die Idee darin, das SIGTERM-Signal zu erfassen. Schauen Sie sich Folgendes an: /System/Library/LaunchDaemons/com.apple.shutdown_monitor.plist
quelle
Launchd sendet eine Frühwarnung vor Herunterfahren an alle Skripte / Daemons, die über eine StopService () - Unterroutine verfügen . Dies gibt Ihrem Prozess die meiste Zeit zum Aufräumen.
Verwenden Sie einfach launchd, um das Skript zu starten, und lassen Sie es im Hintergrund ausführen, bis es beendet werden muss.
Nachdem die Dienste, die die Frühwarnung erhalten haben, geschlossen wurden, erhalten alle Prozesse
SIGTERM
einige Sekunden vor denSIGKILL
Atomwaffen ein Signal .Sie können ein Skript erstellen, das SIGTERM in den Ruhezustand versetzt und abschließt, um Ihren Befehl zu diesem Zeitpunkt auszuführen. Sie müssen sehen, ob dies in der Praxis genügend Zeit für die Ausführung der Befehle lässt. Dies vermeidet ein wenig Codierung, aber nicht viel - es ist im Allgemeinen besser, nur einen Daemon aus einem Shell-Skript zu erstellen.
Aus historischer Sicht -
/sbin/reboot
und Runlevels gab es unter Darwin / OS X nie undrc.shutdown
sie werden zusammen mit dem Rest vonrc
jetzt,launchd
der der Boss ist, veraltet . Möglicherweise können Sie rc.shutdown für Tiger oder früher verwenden (ich habe derzeit keines dieser Bilder zur Überprüfung bereit). Lion hat sicherlich alle Spuren von rc.d und init.d entfernt.Vielleicht möchten Sie sehen, ob Sleepwatcher in Ihrem Fall helfen würde. Ich habe es schon eine ganze Weile nicht mehr benutzt - aber es zielt sicherlich darauf ab, Ihr Dilemma zu lösen.
quelle