기본 caffeinate
유틸리티가 디스플레이를 닫을 때 맥북이 잠자 지 않도록 작동하지 않습니다. 대신, <5 분 이내에 책상에서 회의까지 걸 으면 시스템이 절전 모드로 전환되고 다양한 네트워크 서비스 (VPN, 화면 공유, VOIP 통화, 메시징 클라이언트, 파일 전송)가 실패 합니다.
노트북 뚜껑을 반쯤 열어서 걷는 것은 내 커피를 안전하게 가지고 다니기가 어려우며 분명히 차갑지 않습니다.
기본 caffeinate
유틸리티는이 제품을 사용자에게 친숙한 대체품으로 취급하도록 설계 pmset
되었지만 AC 전원에서 분리하면 작동하지 않는 것으로 보입니다.
통해 문서 man caffeinate
-s 시스템이 절전 모드가되지 않도록 어설 션을 만듭니다. 이 어설 션은 시스템이 AC 전원으로 실행될 때만 유효합니다 .
InsomniaX 또는 nosleep 의 기본 대안을 찾고 있습니다.
타임 아웃 기능은 필자가 언데드 맥북을 실수로 가방에 넣는 것을 피하기 위해 필요하다. ( caffeinate -t
시간 초과 값을 초 단위로 지정)
답변
이상적이지는 않지만 여기에 해결책이 있습니다. 덮개가 닫혀 있고 배터리로 작동 중일 때 랩톱이 잠자 지 않게하려면 다음 명령을 실행하십시오.
sudo pmset -b sleep 0; sudo pmset -b disablesleep 1
덮개가 닫혀 있고 배터리로 작동 중일 때 랩탑 절전 모드를 다시 활성화하려면 다음 명령을 실행하십시오.
sudo pmset -b sleep 5; sudo pmset -b disablesleep 0
두 번째 명령 세트의 “5”는 배터리 사용시 잠자기 전의 시간 (분)을 나타냅니다. 랩톱에 맞게 조정하십시오.
설정을 다시 활성화하는 것을 잊어 버린 경우 배터리를 사용할 때 랩톱이 절대 절전 모드로 전환되지 않기 때문에 이는 다소 위험합니다. 이 때문에 설정을 자동으로 다시 활성화하는 쉘 스크립트를 작성했습니다.
#!/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 <enter> to continue..."
sudo pmset -b disablesleep 1
sudo pmset -b sleep 0
}
function enable_sleep() {
# $1: <enter> = 0, timeout = 1, Ctrl-C = undef
#----- 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
쉘 스크립트는 히트 할 때까지 자고 비활성화됩니다 Enter그것은 (교대, 당신은 칠 수 절전 설정을 다시 가능하게 지적되는 키 Ctrl– C와 같은 일을 달성을). 또한 절전 설정이 자동으로 다시 활성화 된 후 시간 초과 (기본값은 300 초 / 5 분)가 설정되고 랩톱은 강제로 절전 모드로 전환됩니다. 회의에서 랩톱을 사용하는 경우 이는 고통 스러울 수 있지만 랩톱을 잊어 버려 가방에 넣어 집으로 돌아 가면 생명을 구할 수 있습니다.
숙련 된 독자들은이 명령이 필요하다는 것을 알 것입니다 sudo
. 슬프게도, 그것은 피할 수없는 AFAIK입니다. 시스템에서 수행 한 작업 pmset
은 루트 로 실행하기 위해 비밀번호를 입력하지 않아도되도록하는 것 입니다. 이렇게하려면 sudoers
파일 ( sudo visudo
)을 편집하고 다음 줄을 추가하십시오.
joe ALL=(ALL) NOPASSWD: /usr/bin/pmset
“joe”를 사용자 이름으로 바꿉니다. 쉘 스크립트 SETUID를 실행하여 동일한 결과를 얻을 수 있습니다 (예 : 비밀번호를 입력하지 않고 스크립트를 실행하는 경우). sudoers를 통해이 하나의 명령을 여는 것은 나에게 덜 위험 해 보입니다.
스크립트를 실행하려면 스크립트를 디렉토리에 넣고 다음 PATH
과 같이 호출하십시오.
noz [<timeout in seconds>]
당신이 어디로 가는지에 도착하면, 단순히 공격 Enter또는 Ctrl– C그리고 넌 좋은 이동합니다. 잊어 버리면 자동으로 재설정되고 절전 모드로 전환됩니다.
AppleScript를 통해이 모든 것을 달성 할 수있는 방법이있을 수 있으므로 단축키를 할당 할 수 있습니다. 커맨드 라인에서 이것을 실행하는 데 지친 적이 있다면 시도해 볼 것입니다.
답변
Github 사용자 iccir는 Fermata라는 매우 편리한 무료 메뉴 바 앱을 만들었습니다. Fermata는 뚜껑을 닫은 상태에서 MacBook을 깨우고 시간 제한 기간을 설정할 수 있습니다.
방금 모하비 (10.14.2)에서 시도해 보았습니다. https://github.com/iccir/Fermata
답변
기본 방법은 없습니다. 다음은 몇 가지 검색 및 시험 후 얻은 것입니다.
노트 :