Szukam skryptu, który zabije wszystkie procesy na moim Macu. Aby być bardziej szczegółowym, skrypt powinien zabić wszystkie procesy i zamknąć.
Chodzi o to, że chcę zabić wszystkie procesy i uruchom ponownie Mac OS X ale nie zamykając go. Wiem, że istnieją takie polecenia sudo shutdown -r now
ale nie działa na moim Macu (to polecenie restartuje go, ale nie zabija procesów po ponownym uruchomieniu).
Nie mogę użyć sudo shutdown - h now
ponieważ nie mam dostępu do mojego Maca (tylko TeamViewer do połączenia z moim Macem Mini). Nie mogę więc wcisnąć / wyłączyć / ponownie uruchomić przycisku.
Jakieś pomysły, jak to zrobić?
sudo shutdown -r now
nie zabija procesów po ponownym uruchomieniu. Więc nie. Jeśli zabijesz wszystkie procesy, będzie to obejmować proces init, który ponownie zatrzyma twój system. Ponowne uruchomienie koniecznie spowoduje ponowne uruchomienie wielu procesów.Odpowiedzi:
Jak zauważył Daniel J., dlaczego nie możesz użyć
Spowoduje to zabicie wszystkich procesów na komputerze i zamknięcie komputera. Dlaczego musisz „przepisać” skrypt, który został już wykonany przez
shutdown
dowództwo?źródło
Potrzebujesz skryptu bash, który pobiera listę wszystkich działających procesów i ich PID, a następnie używa pętli do zabicia każdego z tych PID, takich jak
kill 1002
wewnątrz pętli po wywołaniu możesz wywołać proces zamykania. Rzecz w tym, że proces zamykania działa już dla ciebie.źródło
kill -9 -1
.Jeśli istnieje tylko kilka konkretnych procesów, które chcesz zakończyć, możesz użyć
killall
a następnie użyj AppleScript do wysłanialoginwindow
zakAEShutDown
Apple event:Jeśli chcesz zamknąć system bez pytania o zapisanie niezapisanych zmian itd., Spróbuj użyć
sudo shutdown -h now
. Wysyła wszystkie procesyTERM
sygnał, po którym następuje aKILL
sygnał, który powinien być stosunkowo bezpieczny nawet w przypadku aplikacji graficznych. Jeśli aplikacja obsługuje nagłe zakończenie, wysyłanie jej powinno być bezpieczneKILL
sygnał.Zazwyczaj po zamknięciu aplikacje Cocoa są kończone przez wywołanie
applicationShouldTerminate:
Metoda delegata, aplikacje inne niż Cocoa i procesy w tle są wysyłanekAEQuitApplication
Zdarzenie Apple i demony są wysyłaneTERM
sygnał, po którym następuje aKILL
sygnał. Widzieć Przewodnik po programowaniu demonów i usług .Edytuj: jeśli chcesz wyłączyć ponowne otwieranie aplikacji po ponownym uruchomieniu, możesz uruchomić
defaults -currentHost write com.apple.loginwindow TALAppsToRelaunchAtLogin -array '()'
przedsudo shutdown -r now
. Lista aplikacji do ponownego otwarcia przy logowaniu jest przechowywana w~/Library/Preferences/ByHost/com.apple.loginwindow.*.plist
.źródło