Próbuję zmusić system Mac OS X do zapisania wszystkich maszyn wirtualnych VirtualBox po ponownym uruchomieniu. Mam już skrypt, który to robi, ale potrzebuję OS X, aby uruchomić ten skrypt automatycznie przed ponownym uruchomieniem.
Czy po ponownym uruchomieniu Mac OS X uruchamia się / sbin / reboot?
Lub jak inaczej można to osiągnąć?
/etc/rc.shutdown.local
celu uruchomienia go podczas zamykania. Wygląda na to, że tego właśnie szukasz.Odpowiedzi:
Chociaż Apple zaleca użycie „ uruchomionego ”, najłatwiej jest utworzyć skrypt powłoki, używając na przykład pico terminalu:
Plik może zawierać coś takiego:
Następnie daj uprawnienia egzekucyjne:
Na koniec podpisz skrypt do procedury wylogowania:
Jeśli uruchomisz inną aplikację, ponieważ nie przetestowałem tego, myślę, że może być przydatne ostrzeżenie siebie i ciebie, że:
Być może będziemy musieli zabić sygnał wyłączenia, aby wykonać to, co chcemy;
Następnie wyślij nowy (uważaj, aby nie zabić sygnału wysyłanego przez nasz własny
skrypt)…
Jeśli chcesz usunąć hak:
Jeśli używasz „ uruchomionego ”, pomysłem byłoby przechwycenie sygnału SIGTERM. Zobacz: /System/Library/LaunchDaemons/com.apple.shutdown_monitor.plist
źródło
Launchd wysyła wczesne ostrzeżenie o wyłączeniu do wszystkich skryptów / demonów, które mają podprogram StopService () . Daje to procesowi najwięcej czasu na oczyszczenie.
Wystarczy uruchomić, aby uruchomić skrypt i uruchomić go w tle, aż nadejdzie czas, aby wyjść.
Po zamknięciu usług, które otrzymały wczesne ostrzeżenie, wszystkie procesy otrzymują
SIGTERM
sygnał na kilka sekund przedSIGKILL
nimi.Możesz stworzyć skrypt, który śpi i zatrzymuje SIGTERM, aby uruchomić twoje polecenie, kiedy nadejdzie ten czas. Będziesz musiał sprawdzić, czy daje to w praktyce wystarczająco dużo czasu na wykonanie poleceń. Pozwala to uniknąć trochę kodowania, ale niewiele - na ogół lepiej jest zrobić demona ze skryptu powłoki.
Z historycznego punktu widzenia -
/sbin/reboot
i poziomy działania nigdy nie istniały w systemie Darwin / OS X irc.shutdown
są przestarzałe, podobnie jak resztarc
obecnie, któralaunchd
jest szefem. Być może będziesz mógł użyć rc.shutdown na tygrysie lub wcześniejszych (nie mam obecnie żadnego z tych zdjęć do sprawdzenia) Lion z pewnością usunął wszystkie ślady rc.d i init.d.Możesz sprawdzić, czy Sleepwatcher pomoże w twoim przypadku. Nie używałem go od dłuższego czasu - ale z pewnością ma na celu rozwiązanie twojego dylematu.
źródło