Отключите Mac от сна, пока работает скрипт bash, затем дайте ему поспать как обычно после завершения
У меня есть мой Mac, чтобы проснуться ночью и запустить rsync, чтобы поддержать его. Это настраивается через Энергосбережение> Расписание.
Однако, похоже, что он возвращается в спящий режим, прежде чем сможет что-либо сделать, поэтому мне нужно остановить его во время выполнения сценария bash, из которого запускается rsync.
Я подумал, что лучший способ (если это возможно) - ввести команду для установки тайм-аута сна на "Никогда" или очень долгого тайм-аута до того, как он выполнит rsyncs, а затем вернуться к нормальному состоянию после его завершения. Есть ли лучшее решение для этого?
3 ответа
Caffeinate
Например:
caffeinate -i rsync -avz someuser@somehost:somefolder /some/local/folder
Со страницы руководства:
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.
Увидеть man caffeinate
для деталей.
Mac OS X 10.8 (Mountain Lion) и выше
Использовать caffeinate
команда. Смотрите ответ Натана Лонга или man caffeinate
для деталей.
Mac OS X 10.7 (Lion) и более ранние
Это скрыто на странице руководства, но pmset имеет очень простой режим для предотвращения сна. Если вы выполните команду pmset noidle
ваш Mac будет бодрствовать, пока этот процесс не будет убит. Вот как это использовать в скрипте:
# 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
Это лучше, чем использовать pmset для изменения настроек сна, для чего требуется root-доступ и (при условии, что вы хотите быть хорошим гражданином) некоторый способ определения текущих настроек и их изменения, когда вы закончите.