Jak zapobiec uśpieniu komputera Mac z wiersza polecenia?

12

Mam długo działający skrypt na komputerze zdalnym.

Nie chcę kończyć mojej sesji ssh i muszę wprowadzić ją do skryptu powłoki.

Jak można zapobiec zasypianiu komputera Mac z wiersza poleceń?

kobame
źródło
3
Która wersja OS X?
nohillside

Odpowiedzi:

19

W Mountain Lion możesz użyć caffeinatepolecenia.

caffeinate -u -t 1000

zapobiegnie bezczynności snu przez 1000 sekund.

Nemo
źródło
1
Nie odniosłem jeszcze żadnego sukcesu z żadną kombinacją „kofeinianu” cmdline (w tym jedną powyżej) ani Caffeine.app w Mavericks zapobiegającym zasypianiu po zamknięciu pokrywy. InsomniaX.app jest jedyną rzeczą, która do tej pory uniemożliwiała uśpienie pokrywy, ale nie znalazła jeszcze działającej wersji cmdline (jeszcze nie uruchomiła goo.gl/CU06jb - może być przestarzała). Mimo to chcę czegoś, co umożliwi wyświetlanie hasła, nawet przy odmowie snu przez ograniczony, programowalny czas po zamknięciu pokrywy ... i InsomniaX.app też tego nie robi.
Johnny Utahh
1
Podobne problemy. Korzystam z Yosemite i mimo że uruchamiam kofeinę w terminalu, po chwili ekran się ściemnia i muszę się zalogować. To sugeruje mi, że kofeinat nie podtrzymuje komputera Mac, co jest moim celem, więc połączenie Wi-Fi może się utrzymywać / cokolwiek mam, może kontynuować.
dmonopoly
12

Rozwiązaniem tego problemu nie jest utrzymywanie gotowości klienta (komputera Mac). Stosowanie takich podejść jest niezależne. Co się stanie, jeśli połączenie sieciowe zostanie utracone? Nawet jeśli komputer Mac nie śpi, skrypt się zatrzyma.

Posługiwać się nohup

Jeśli wywoływany jest długo działający skrypt eternity.sh, spróbuj wykonać następujące czynności:

nohup /path/to/eternity.sh > /path/to/output.out &

Teraz możesz nawet zamknąć połączenie, a Twój skrypt będzie działał . Do &tła proces, dzięki czemu można zachować otwarte połączenie i wprowadzać polecenia. Wyświetl dowolne dane wyjściowe skryptu za pomocą:

tail -f /path/to/output.out

Ścieżki w przykładach są opcjonalne, jeśli skrypt znajduje się na Twojej ścieżce i chcesz, aby wyniki skryptu były zapisywane output.outw bieżącym katalogu.

Zarządzam skryptami, które działają przez kilka dni. Takie skrypty należy odłączyć od terminala. Na szczęście nohupzapewnia łatwe do zapamiętania wywołanie polecenia w celu osiągnięcia tego - nie ma potrzeby zawieszania się .

ephsmith
źródło
5
Zobacz także man screen.
@mankoff - Już używam screena. To najlepsze polecenie od odkrycia pokrojonej rasy. ;) Głównym punktem pytania jest wyeliminowanie potrzeby „ssh to @ gdzieś”, gdy mój komputer Mac zasypia - po prostu nie chcę przerywać sesji ssh - moje polecenie po drugiej stronie jest już „chronione” ekranem . ;)
kobame
@ephsmith - pytanie brzmiało: jak wyeliminować zakończenie sesji ssh ... Ofc nohup jest przydatny w sytuacjach, gdy zdalne polecenie nie jest interaktywne. W przypadku poleceń interaktywnych ekran jest znacznie lepszym rozwiązaniem. Dzięki za odpowiedź.
kobame
1
@kobame, być może sedno pytania i ta dodatkowa informacja powinna była zostać zawarta w oryginalnym pytaniu. Pierwszy wiersz twojego pytania dotyczył długo działającego skryptu. Zakładałem, że nie był interaktywny, co prowadziło do odniesienia do nohup.
ephsmith
@kobame, czy którakolwiek z tych odpowiedzi rozwiązała problem?
ephsmith
8

Inną opcją jest pmset . Użyj polecenia, pmset noidle aby zapobiec uśpieniu tak długo, jak pmsetdziała. Niestety wymaga osobnego okna terminala z pmsetdziałającym w nim. Jednak druga opcja, caffeinatepozwala tylko ustawić określony czas . Jest więc kwestia wyboru, czy chcesz otworzyć drugą sesję SSH, czy poradzić sobie z ograniczeniem czasu.

Edycja: Zgodnie z komentarzem binarybob , możesz uruchomić go w tle w następujący sposób: pmset noidle &Aby wrócić do pmsetpisania fg.

daviesgeek
źródło
Możesz także uruchomić pmsetw tle, pmset noidle &a zatem kontynuować korzystanie z bieżącego wiersza polecenia. Wpisz, fgaby pmsetwrócić, w którym momencie możesz Ctrl + C it
binarybob
@binarybob Oh! Nie wiedziałem tego Dzięki za wskazówkę!
daviesgeek
@davisgeek - naprawdę fajnie! Dzięki za wskazówkę.
kobame
1
ten działa również w notebooku IPython: !pmset noidle- bardzo fajnie, gdy masz komputer stacjonarny obsługujący notebook IPython i laptop łączący się zdalnie.
Jason S,
1
To mi nie działa. Działa pomyślnie, pojawia się komunikat „Zapobieganie bezczynności (^ C, aby wyjść) ...”, ale nadal przechodzi w tryb uśpienia.
Iulian Onofrei,
6
caffeinate -i -s /bin/ssh ...

Wyjaśnienie:

-i - Zapobieganie bezczynności snu.

-s- Zapobiegaj uśpieniu systemu (całkowicie, nawet jeśli zamkniesz pokrywę). Uwaga: działa tylko przy zasilaniu prądem przemiennym.

/bin/ssh- Po prostu pisz dalej polecenie, które chcesz wykonać. Korzystanie sshbezpośrednio zamiast zamiast /bin/sshpowinno również działać.

Wyniki: Twój system nie będzie spał, dopóki sshpolecenie jest uruchomione.

bogdansrc
źródło
-3

Wygaszacz ekranu StarMessage ( http://starmessagesoftware.com/moonscreensaver/ ) ma również opcję utrzymywania MAC w stanie czuwania przez 2 godziny, 8 godzin lub na stałe. Ten sposób wyłączenia snu MAC jest znacznie łatwiejszy niż kofeina.

Wygaszacz ekranu StarMessage
źródło
Jak to działa w wierszu poleceń?
user151019
Przeczytaj sekcję dotyczącą promocji w Centrum pomocy .
nohillside