이상적이지는 않지만 여기에 해결책이 있습니다. 덮개가 닫혀 있고 배터리로 작동 중일 때 랩톱이 잠자 지 않게하려면 다음 명령을 실행하십시오.
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를 통해이 모든 것을 달성 할 수있는 방법이있을 수 있으므로 단축키를 할당 할 수 있습니다. 커맨드 라인에서 이것을 실행하는 데 지친 적이 있다면 시도해 볼 것입니다.