在Mojave / Catalina上,防止Mac在盖子关闭时进入睡眠状态。
继CJ的回答之后,您可以创建一个shell脚本来自动管理pmset启用和禁用睡眠。
https://apple.stackexchange.com/a/270835/408131
#!/bin/bash
#***************************************************************************
#*** noz - prevent laptop from sleeping when lid is closed
#***************************************************************************
#***** set some defaults *****
BATTERY_SLEEP=5 # in minutes
DEF_WAKE_LEN=300 # in seconds
#***** determine timeout value *****
timeout_len=${1:-$DEF_WAKE_LEN}
function prevent_sleep() {
echo
echo -n "Preventing sleep for $timeout_len seconds; press
sudo pmset -b disablesleep 1
sudo pmset -b sleep 0
}
function enable_sleep() {
# $1:
#----- insert a newline for timeout or Ctrl-C -----
if [[ ${1:-1} -eq 1 ]]; then echo; fi
echo "Restoring previous battery sleep setting: $BATTERY_SLEEP"
sudo pmset -b disablesleep 0
sudo pmset -b sleep $BATTERY_SLEEP
#----- sleep on timeout only -----
if [[ ${1:--1} -eq 1 ]]; then sudo pmset sleepnow; fi
exit
}
#***** prevent it from sleeping *****
prevent_sleep
#***** trap Ctrl-C *****
trap enable_sleep INT
#***** wait for an enter *****
read -t $timeout_len
rc=$?
#***** re-enable normal sleep *****
enable_sleep $rc
该shell脚本将禁用睡眠直到按下Enter键,此时它将重新启用睡眠设置(或者,您可以按下Ctrl-C以达到同样的效果)。它还将设置一个超时时间(默认为300秒/5分钟),超过该时间后睡眠设置将自动重新启用,并强制笔记本电脑进入睡眠状态。如果您在会议中使用笔记本电脑,则可能会感到困扰,但如果您忘记了并把笔记本电脑放在包里带回家,它将成为救命稻草。
敏锐的读者会注意到这些命令需要sudo权限;很遗憾,在我所知道的情况下是不可避免的。在我的系统上,我已经做了一些配置,使得我无需输入密码就能以root身份运行pmset。要实现这一点,请编辑sudoers文件(执行sudo visudo)并添加以下行:
YOURUSERNAME ALL=(ALL) NOPASSWD: /usr/bin/pmset
将“YOURUSERNAME”替换为您的用户名。您可能可以通过运行SETUID shell脚本来实现相同的结果(即在不输入密码的情况下运行脚本),但我不喜欢这样做;通过sudoers打开此一个命令似乎对我来说风险较小。
要运行脚本,请将其放在您的PATH目录中,并按以下方式调用:
noz [
当你到达目的地时,只需按下Enter或Ctrl-C,然后你就可以开始了。如果你忘记了,它会自动重置并进入睡眠状态。
你还可以设置一个Automator快速操作,告诉它执行noz,并将其绑定到一个热键上。

