Отключите Mac от сна во время работы bash-скрипта, затем дайте ему поспать как обычно после завершения


13

У меня есть мой Mac, чтобы проснуться ночью и запустить rsync, чтобы поддержать его. Это настраивается через Энергосбережение> Расписание.

Однако, похоже, что он возвращается в спящий режим, прежде чем сможет что-либо сделать, поэтому мне нужно остановить его во время выполнения сценария bash, из которого запускается rsync.

Я подумал, что лучший способ (если это возможно) - ввести команду для установки тайм-аута сна на «Никогда» или очень долгого тайм-аута до того, как он выполнит rsyncs, а затем вернуться к нормальному состоянию после его завершения. Есть ли лучшее решение для этого?


Должен быть на суперпользователя?
Кимваис

Ответы:


18

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подробнее.


11

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-доступ и (при условии, что вы хотите быть хорошим гражданином) некоторый способ определения текущих настроек и их изменения, когда вы закончите.


2
pmset noidleосуждаются: страница человека говорит: This argument is deprecated in favor of caffeinate(8). Смотри мой ответ.
Натан Лонг

4

Пытаться

man pmset

:-)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.