Co rozumiesz przez „aplikację”? Czy musi to być program GUI, czy uruchomienie (które sugeruję poniżej) jest dopuszczalne? Jeśli robisz to, co aplikacja GUI, co chcesz zrobić? Pytaj o czas, w którym komputer powinien zostać wyłączony po uruchomieniu?
TJ Luoma,
Odpowiedzi:
25
Ok, więc w nawiązaniu do mojej poprzedniej odpowiedzi mogę przeprowadzić użytkownika przez crona (wbudowaną usługę harmonogramu UNIX) do uruchomienia zaplanowanego polecenia zamknięcia.
Nie musisz sudotam stawiać ? Wiem, że prawdopodobnie spowoduje to zawieszenie się, ale jestem prawie pewien, że musisz być rootem, aby uruchomić shutdown.
daviesgeek
Żadne wyjątki nie są potrzebne, to niesamowita odpowiedź, dość radośnie zaskoczona, szczególnie po tym, jak odpowiedziałem ci niegrzecznie. Bardzo dziękuję za pomoc
Harry,
3
@daveisgeek - Masz całkowitą rację, ale pamiętaj, że uruchamiamy crontab z sudo. Oznacza to, że edytujemy plik crontab użytkownika root, a zatem wszelkie zaplanowane polecenia będą wykonywane jako ten użytkownik.
macaco
Hej, zrobiłem to iw wyznaczonym czasie dostałem okno dialogowe z informacją, że ten komputer wyłączy się za 10 minut? I prosi mnie o anulowanie. Nie wiem, czy to wynik cronu, czy też oszczędzania energii. Czy cron powinien wymusić zamknięcie bez okna anulowania?
Harry
3
shutdownjest w /sbinktórym prawdopodobnie nie ma domyślnej $ PATH cron. Aby to naprawić, zrób to sudo crontab -ejeszcze raz, wpisz, ddaby usunąć linię (zakładając, że plik wygląda jak ten, który podłączyłeś powyżej) i ponownie wprowadź linię jako 30 22 * * * /sbin/shutdown -h now.
Podczas dodawania polecenia shutdown do uruchomionego agenta w / Library / LaunchAgents /, to nie działało, a „konsola” rejestrowała „zamknięcie: NIE superużytkownik”. Być może zadziałałoby to w / System / Library / LaunchAgents (ale nie należy tam umieszczać rzeczy :-)) Potrzebowałem tylko normalnego wyłączenia, więc poszedłem z osascript i umieściłem to w ~ / Library / LaunchAgents /bla.shutdown.plist. Działało dobrze.
commonpike
Musiałem jednak użyć <code> osascript -e 'powiedz aplikacji „Finder”, żeby się zamknął ”</code>
commonpike
To jedyna poprawna odpowiedź. (moim zdaniem)
CousinCocaine,
9
Można to zaplanować w Preferencjach systemowych> Oszczędzanie energii> Harmonogram . Nie jestem pewien, czy to zainicjuje wymuszone zamknięcie, będziesz musiał to wypróbować. Jest to jednak wbudowana opcja automatyzacji planowego wyłączania / zwiększania mocy.
Możesz także wymusić zamknięcie systemu za pomocą polecenia terminalu (wymaga roota):
zamknij -h teraz
Możesz umieścić to polecenie w zaplanowanym zadaniu uruchomionym lub cron . Sprawdź ten artykuł, aby uzyskać więcej informacji na temat tych dwóch usług.
Możesz także sprawdzić aplikację taką jak trafnie nazwana iWannaSleep (nie jestem pewien, czy to wymusza zamknięcie).
Możesz sprawiać wrażenie mniej niewdzięcznego, ale jeśli ponownie przeczytasz moją odpowiedź, zobaczysz, że polecam aplikację, a jeśli wykonasz trochę niezależnych badań, zobaczysz, że jest jeszcze kilka aplikacji, które mają tę zdolność!
macaco
iWannaSleep to pierwszy wynik, który ludzie polecają w Google, i nie robi tego, co chcę. A ty polecasz mi nauczyć się czegoś uniksowego, żeby wyłączyć komputer?
Harry
3
Polecam, ponieważ jest to skuteczny sposób na osiągnięcie tego, co chcesz za pomocą wbudowanych narzędzi. Jeśli nie możesz znaleźć aplikacji, która odpowiada Twoim potrzebom, być może zajrzysz do czegoś podobnego do mojej sugestii.
macaco
1
Oszczędzanie energii »Harmonogram nie jest dobrą odpowiedzią, ponieważ poprosi użytkownika o 10 minut przed wyłączeniem i zaproponuje anulowanie procesu.
TJ Luoma,
3
Możesz użyć shutdownbezpośrednio, aby zaplanować zamknięcie w dowolnym momencie w przyszłości:
shutdown -h time
gdzie czas określa przyszły czas w jednym z dwóch formatów: + liczba lub rrmmddggmm, gdzie rok, miesiąc i dzień mogą być domyślnie ustawione na bieżące wartości systemowe. Pierwsza forma obniża system w liczbie minut, a druga w określonym czasie bezwzględnym.
Wszyscy aktywni użytkownicy otrzymują wystarczające powiadomienie.
Duże ostrzeżenie jest wyświetlane na krótko przed rozpoczęciem wyłączania.
Uruchamiane aplikacje są ładnie proszone o zakończenie.
Aplikacje ignorujące miłe żądanie są mocniej zamknięte.
Wyloguj się, aby zakończyć, zanim komputer Mac zostanie ostatecznie zamknięty.
Nieuczciwej aplikacji lub procesowi bardzo trudno jest zablokować te kroki.
Dlaczego nie shutdown
Za pomocą shutdown spowoduje wymuszenie zakończenia wszystkich procesów na komputerze Mac, w tym aplikacji graficznych. W przypadku wielu aplikacji jest to zachowanie agresywne i nie zapewnia aplikacji dużej możliwości zapisania stanu lub danych.
możesz użyć SendAppleEventToSystemProcess (kAEShutDown), a następnie możesz użyć polecenia killall -u nazwa użytkownika, aby zabić wszystkie aplikacje (ponieważ nie chcesz, aby można je było anulować), możesz również sprawdzić klasę timera: developer.apple.com/library/ mac / # dokumentacja / Cocoa / Reference /…
Samantha Catania
1
Świetny artykuł, ale OP zastanawiał się nad użyciem crona lub uruchomieniem go, wątpię, żeby chciał napisać własne rozwiązanie tego problemu.
macaco
1
Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
Odpowiedzi:
Ok, więc w nawiązaniu do mojej poprzedniej odpowiedzi mogę przeprowadzić użytkownika przez crona (wbudowaną usługę harmonogramu UNIX) do uruchomienia zaplanowanego polecenia zamknięcia.
Będzie działał jako root i zostanie wymuszony.
sudo crontab -e
Musisz wprowadzić hasło logowania, a następnie nacisnąć enter.
Będziesz teraz w edytorze tekstu (vim). Ostrożnie wprowadź następujące naciśnięcia klawiszy.
Powiedzmy, że chcesz, aby maszyna była zamykana codziennie o 2 w nocy, teraz wprowadzimy:
Jeśli chcesz, aby maszyna była zamykana codziennie o 2:30, wpisz:
Powinieneś teraz wrócić do wiersza poleceń, w którym zacząłeś.
Jesteś skończony!
źródło
sudo
tam stawiać ? Wiem, że prawdopodobnie spowoduje to zawieszenie się, ale jestem prawie pewien, że musisz być rootem, aby uruchomićshutdown
.shutdown
jest w/sbin
którym prawdopodobnie nie ma domyślnej $ PATH cron. Aby to naprawić, zrób tosudo crontab -e
jeszcze raz, wpisz,dd
aby usunąć linię (zakładając, że plik wygląda jak ten, który podłączyłeś powyżej) i ponownie wprowadź linię jako30 22 * * * /sbin/shutdown -h now
.Można to jednak anulować:
Zatrzymaj się na
yymmddhhmm
:Zatrzymaj się za 4 minuty:
/Library/LaunchAgents/me.lri.forceshutdown.plist
:Jeśli plist był własnością zwykłego użytkownika, próba załadowania go spowodowałaby błąd
launchctl: Dubious ownership on file (skipping)
:Agenta można załadować, wylogowując się i ponownie logując, lub za pomocą:
sudo crontab -e
Spowoduje to normalne niewymuszone zamknięcie:
źródło
Można to zaplanować w Preferencjach systemowych> Oszczędzanie energii> Harmonogram . Nie jestem pewien, czy to zainicjuje wymuszone zamknięcie, będziesz musiał to wypróbować. Jest to jednak wbudowana opcja automatyzacji planowego wyłączania / zwiększania mocy.
Możesz także wymusić zamknięcie systemu za pomocą polecenia terminalu (wymaga roota):
zamknij -h teraz
Możesz umieścić to polecenie w zaplanowanym zadaniu uruchomionym lub cron . Sprawdź ten artykuł, aby uzyskać więcej informacji na temat tych dwóch usług.
Możesz także sprawdzić aplikację taką jak trafnie nazwana iWannaSleep (nie jestem pewien, czy to wymusza zamknięcie).
źródło
Możesz użyć
shutdown
bezpośrednio, aby zaplanować zamknięcie w dowolnym momencie w przyszłości:gdzie czas określa przyszły czas w jednym z dwóch formatów: + liczba lub rrmmddggmm, gdzie rok, miesiąc i dzień mogą być domyślnie ustawione na bieżące wartości systemowe. Pierwsza forma obniża system w liczbie minut, a druga w określonym czasie bezwzględnym.
źródło
# Zobacz notkę poniżej
Uwaga:
Jak napisano, plist spowoduje codzienne zamykanie komputera o 23:00 (czasu lokalnego).
Jeśli chcesz zmienić czas, edytuj skrypt w dowolnym edytorze tekstu. Zmień klucze godziny i minuty, tutaj:
(zwróć uwagę na użycie 24-godzinnego czasu)
źródło
Lepsze zaplanowane zamknięcie
Jeśli chcesz bezpiecznie zamknąć komputer Mac w zaplanowanym czasie, rozważ Power Manager ; ładnie się wyłącza, nie pozwalając aplikacjom blokować procesu:
Nieuczciwej aplikacji lub procesowi bardzo trudno jest zablokować te kroki.
Dlaczego nie
shutdown
Za pomocą
shutdown
spowoduje wymuszenie zakończenia wszystkich procesów na komputerze Mac, w tym aplikacji graficznych. W przypadku wielu aplikacji jest to zachowanie agresywne i nie zapewnia aplikacji dużej możliwości zapisania stanu lub danych.Asystent harmonogramu
Program Power Manager zawiera zadanie Asystenta harmonogramu służące do zamykania systemu zgodnie z harmonogramem .
Ujawnienie: Współpracuję z firmą, która tworzy Power Managera.
źródło
Rzuciłbym okiem na tę notatkę techniczną Apple
źródło