Zatrzymaj komputer Mac przed zaśnięciem podczas działania skryptu bash, a po zakończeniu pozwól mu spać normalnie

13

Mam swojego Maca, aby obudzić się w nocy i uruchomić rsync, aby to zrobić. Konfiguruje się to poprzez Oszczędzanie energii> Harmonogram.

Wydaje się jednak, że wraca do snu, zanim będzie w stanie cokolwiek zrobić, więc muszę go zatrzymać podczas wykonywania skryptu bash, z którego uruchamia się rsync.

Uznałem, że najlepszym sposobem (jeśli to możliwe) jest wydanie polecenia ustawiania limitu czasu uśpienia na „Nigdy” lub bardzo długiego limitu czasu przed ponownym synchronizowaniem, a następnie powrót do normalnego stanu po zakończeniu. Czy jest na to lepsze rozwiązanie?

Gafel
źródło
Powinien być na superużytkowniku?
Kimvais,

Odpowiedzi:

18

Kofeina

Na przykład:

caffeinate -i rsync -avz someuser@somehost:somefolder /some/local/folder

Ze strony podręcznika:

EXAMPLE
     caffeinate -i make
        caffeinate forks a process, execs "make" in it, and holds an
        assertion that prevents idle sleep as long as that process
        is running.

Zobacz man caffeinateszczegóły.

Nathan Long
źródło
11

Mac OS X 10.8 (Mountain Lion) i nowszy

Użyj caffeinatepolecenia. Zobacz odpowiedź Nathana Longa lub man caffeinateszczegółowe informacje.

Mac OS X 10.7 (Lion) i wcześniejsze

Jest zakopany na stronie podręcznika, ale program pmset ma bardzo prosty tryb zapobiegania senowi. Jeśli wykonasz polecenie, pmset noidlekomputer Mac pozostanie w trybie czuwania, dopóki ten proces nie zostanie zabity. Oto jak używać go w skrypcie:

# launch process to prevent sleep and move it to the background
pmset noidle &
# save the process ID
PMSETPID=$!

... do stuff here ...
... don't fall asleep ...
... watch out for that tree!
... ok we're free and clear now ...

# kill pmset so the computer can sleep if it wants to
kill $PMSETPID

Jest to lepsze niż używanie pmset do zmiany ustawień snu, co wymaga dostępu do konta root i (zakładając, że chcesz być dobrym obywatelem) jakiegoś sposobu wykrycia bieżących ustawień i zmiany ich z powrotem, gdy skończysz.

benzado
źródło
2
pmset noidlejest przestarzała: strona człowiek mówi: This argument is deprecated in favor of caffeinate(8). Zobacz moją odpowiedź.
Nathan Long,