在运行bash脚本时停止Mac的睡眠,然后在完成后使其正常睡眠


13

我已经将Mac夜间唤醒,并运行rsync进行备份。通过“节能器”>“时间表”进行配置。

但是似乎它要重新进入睡眠状态才能完成任何工作,因此我需要在运行rsync的bash脚本执行过程中使其停止睡眠。

我认为最好的方法(如果可能的话)是发出命令,将睡眠超时设置为“从不”或非常长的超时时间,然后再进行rsync,然后在完成后恢复正常。有更好的解决方案吗?


应该是超级用户吗?

Answers:


18

咖啡因

例如:

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 noidleMac将保持唤醒状态,直到该进程被杀死。这是在脚本中使用它的方法:

# 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

:-)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.